我尝试使用以下代码将文件从本地复制到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中成功执行。请帮帮我!
2条答案
按热度按时间fd3cxomn1#
删除-f参数:
如果仍然找不到文件,请在计算机上运行以下命令,确保键入的文件名正确:
hdfs dfs -ls /home/ak18191/ar_new.txt
https://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-common/filesystemshell.html#putwz3gfoph2#
copyFromLocalFile
接受两个路径对象,而不是字符串https://hadoop.apache.org/docs/stable/api/org/apache/hadoop/fs/filesystem.html