从本地python脚本在远程hdfs中创建/写入/更新文件的最佳方法是什么?我可以列出文件和目录,但写作似乎是一个问题。我已经搜索了hdfs和snakebite,但是没有一个能给出一个干净的方法。
xsuvu9jc1#
试试hdfs图书馆。。你可以使用write()这真是太好了。https://hdfscli.readthedocs.io/en/latest/api.html#hdfs.client.client.write例子:要创建连接:
from hdfs import InsecureClient client = InsecureClient('http://host:port', user='ann') from json import dump, dumps records = [ {'name': 'foo', 'weight': 1}, {'name': 'bar', 'weight': 2}, ] # As a context manager: with client.write('data/records.jsonl', encoding='utf-8') as writer: dump(records, writer) # Or, passing in a generator directly: client.write('data/records.jsonl', data=dumps(records), encoding='utf-8')
对于csv你可以做什么
import pandas as pd df=pd.read.csv("file.csv") with client_hdfs.write('path/output.csv', encoding = 'utf-8') as writer: df.to_csv(writer)
vnjpjtjt2#
无需使用为hdfs构建的复杂库,也可以简单地将python中的requests包用于hdfs,如下所示:
import requests from json import dumps params = ( ('op', 'CREATE') ) data = dumps(file) # some file or object - also tested for pickle library response = requests.put('http://host:port/path', params=params, data=data)
如果响应是200,那么您的连接正在工作!此技术允许您使用hadoop的restfulapi提供的所有实用程序:ls、md、get、post等。还可以通过以下方法将curl命令转换为python:获取hdfs的命令:https://hadoop.apache.org/docs/r1.0.4/webhdfs.html转换为python:https://curl.trillworks.com/希望这有帮助!
jfewjypa3#
它们使用webhdfs,这在默认情况下是不启用的,并且在没有kerberos或apacheknox的情况下是不安全的。这就是 upload 它的功能 hdfs 链接到的库使用。
upload
hdfs
你可以用 pyspark .示例-如何将pysparkDataframe写入hdfs,然后如何将其读回Dataframe? snakebite 但它不写文件 pyarrow 有一个filesystem.open()函数,应该也可以写入hdfs,尽管我没有尝试过。
pyspark
snakebite
pyarrow
3条答案
按热度按时间xsuvu9jc1#
试试hdfs图书馆。。你可以使用write()这真是太好了。https://hdfscli.readthedocs.io/en/latest/api.html#hdfs.client.client.write
例子:
要创建连接:
对于csv你可以做什么
vnjpjtjt2#
无需使用为hdfs构建的复杂库,也可以简单地将python中的requests包用于hdfs,如下所示:
如果响应是200,那么您的连接正在工作!此技术允许您使用hadoop的restfulapi提供的所有实用程序:ls、md、get、post等。
还可以通过以下方法将curl命令转换为python:
获取hdfs的命令:https://hadoop.apache.org/docs/r1.0.4/webhdfs.html
转换为python:https://curl.trillworks.com/
希望这有帮助!
jfewjypa3#
其他答案怎么了
它们使用webhdfs,这在默认情况下是不启用的,并且在没有kerberos或apacheknox的情况下是不安全的。
这就是
upload
它的功能hdfs
链接到的库使用。使用python编写hdfs的本机(更安全)方法
你可以用
pyspark
.示例-如何将pysparkDataframe写入hdfs,然后如何将其读回Dataframe?
snakebite
但它不写文件pyarrow
有一个filesystem.open()函数,应该也可以写入hdfs,尽管我没有尝试过。