gpt4 book ai didi

python - 有没有办法使用python脚本将特定的平面文件(.txt或.csv)提取到HDFS中

转载 作者:行者123 更新时间:2023-12-02 20:16:37 24 4
gpt4 key购买 nike

我正在尝试将本地系统中存在的平面文件加载到HDFS存储中。
实际上,我们有GB的数据要上传到hadoop内部表中。
我们使用传统的过程来加载数据,例如从文件中读取数据并拆分成小块,然后使用来自python的配置单元查询将每个块加载到内部表中。此过程需要花费数小时才能加载到表中。
我需要一种有效的方法,可以减少从文件到hadoop表中加载数据的时间。在谷歌搜索时,我发现我们可以将文件上传到hdfs存储,然后从那里可以将数据加载到表中。但是我将不得不使用python上传文件,以便可以将其自动化。
谁能帮我找出一个好的方法。

最佳答案

您需要处理文件到hadoop FS,而不是在python上执行。为了将数据加载到hadoop FS中,可以使用hadoop shellhadoop fs -copyFromLocal <local directory>/file.csv <hadoop directory>您可以使用subprocess在python中触发此命令

import subprocess

proc = subprocess.Popen(['hdfs', 'dfs', '-copyFromLocal', '<local directory>/file.csv', '<hadoop directory>'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
s_output, s_err = proc.communicate()
s_return = proc.returncode
将文件放入hadoop文件系统后,您可以创建一个配置单元外部表,在文件顶部定义一个架构。
create external table table_name(
col1 string,
col2 string,
...
...
) row format delimited
fields terminated by ','
location '<hadoop directory>'
接下来,当您从外部表读取数据时,执行速度会更快。
引用:
  • How to save a file in hadoop with python
  • Hive External Table
  • 关于python - 有没有办法使用python脚本将特定的平面文件(.txt或.csv)提取到HDFS中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63077072/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com