pyspark-将文件从本地(边缘节点)复制到hdfs位置时出错

qrjkbowd  于 2021-05-27  发布在  Hadoop
关注(0)|答案(2)|浏览(563)

我尝试使用以下代码将文件从本地复制到pyspark中的hdfs位置。

sc = SparkSession.builder.appName("HDFSPySparkRead").getOrCreate()
sparkCont = sc.sparkContext
URI           = sparkCont._jvm.java.net.URI
Path          = sparkCont._jvm.org.apache.hadoop.fs.Path
FileSystem    = sparkCont._jvm.org.apache.hadoop.fs.FileSystem
Configuration = sparkCont._jvm.org.apache.hadoop.conf.Configuration

fs = FileSystem.get(URI("hdfs://gcgmwdcuat:8020"), Configuration())
fs.copyFromLocalFile('/home/ak18191/ar_new.txt', 'hdfs://gcgmwdcuat:8020/user/ak18191/')

获取错误:
py4j.py4jexception:方法copyfromlocalfile([class java.lang.string,class java.lang.string])不存在
我也试过下面的代码

import subprocess
cmd = 'hdfs dfs -put -f /home/ak18191/ar_new.txt hdfs://gcgmwdcuat:8020/user/ak18191/'
subprocess.call(cmd)

但是获取文件找不到错误。命令正在spark shell中成功执行。请帮帮我!

fd3cxomn

fd3cxomn1#

删除-f参数:

import subprocess
cmd = 'hdfs dfs -put /home/ak18191/ar_new.txt hdfs://gcgmwdcuat:8020/user/ak18191/'
subprocess.call(cmd)

如果仍然找不到文件,请在计算机上运行以下命令,确保键入的文件名正确: hdfs dfs -ls /home/ak18191/ar_new.txt https://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-common/filesystemshell.html#put

wz3gfoph

wz3gfoph2#

copyFromLocalFile 接受两个路径对象,而不是字符串
https://hadoop.apache.org/docs/stable/api/org/apache/hadoop/fs/filesystem.html

相关问题