歡迎您光臨本站 註冊首頁

python讀取hdfs並返回dataframe教程

←手機掃碼閱讀     retouched @ 2020-06-08 , reply:0

不多說,直接上代碼

  from hdfs import Client  import pandas as pd     HDFSHOST = "http://xxx:50070"  FILENAME = "/tmp/preprocess/part-00000" #hdfs文件路徑  COLUMNNAMES = [xx']     def readHDFS():  '''  讀取hdfs文件     Returns:  df:dataframe hdfs數據  '''  client = Client(HDFSHOST)  # 目前讀取hdfs文件採用方式:  # 1. 先從hdfs讀取二進制數據流文件  # 2. 將二進制文件另存為.csv  # 3. 使用pandas讀取csv文件  with client.read(FILENAME) as fs:  content = fs.read()  s = str(content, 'utf-8')  file = open("data/tmp/data.csv", "w")  file.write(s)  df = pd.read_csv("data/tmp/data.csv", names=COLUMNNAMES)  return df

 

補充知識:Python連接HDFS實現文件上傳下載及Pandas轉換文本文件到CSV

1. 目標

通過hadoop hive或spark等數據計算框架完成數據清洗後的數據在HDFS上

爬蟲和機器學習在Python中容易實現

在Linux環境下編寫Python沒有pyCharm便利

需要建立Python與HDFS的讀寫通道

2. 實現

安裝Python模塊pyhdfs

版本:Python3.6, hadoop 2.9

讀文件代碼如下

  from pyhdfs import HdfsClient  client=HdfsClient(hosts='ghym:50070')#hdfs地址  res=client.open('/sy.txt')#hdfs文件路徑,根目錄/  for r in res:    line=str(r,encoding='utf8')#open後是二進制,str()轉換為字符串並轉碼    print(line)

 

寫文件代碼如下

  from pyhdfs import HdfsClient  client=HdfsClient(hosts='ghym:50070',user_name='hadoop')#只有hadoop用戶擁有寫權限  str='hello world'  client.create('/py.txt',str)#創建新文件並寫入字符串

 

上傳本地文件到HDFS

  from pyhdfs import HdfsClient  client = HdfsClient(hosts='ghym:50070', user_name='hadoop')  client.copy_from_local('d:/pydemo.txt', '/pydemo')#本地文件絕對路徑,HDFS目錄必須不存在

 

3. 讀取文本文件寫入csv

Python安裝pandas模塊

確認文本文件的分隔符

  # pyhdfs讀取文本文件,分隔符為逗號,  from pyhdfs import HdfsClient  client = HdfsClient(hosts='ghym:50070', user_name='hadoop')  inputfile=client.open('/int.txt')  # pandas調用讀取方法read_table  import pandas as pd  df=pd.read_table(inputfile,encoding='gbk',sep=',')#參數為源文件,編碼,分隔符  # 數據集to_csv方法轉換為csv  df.to_csv('demo.csv',encoding='gbk',index=None)#參數為目標文件,編碼,是否要索引

 


[retouched ] python讀取hdfs並返回dataframe教程已經有361次圍觀

http://coctec.com/docs/python/shhow-post-237455.html