【问题标题】:how to save data in HDFS with spark?如何使用 spark 将数据保存在 HDFS 中?
【发布时间】:2017-06-16 17:02:16
【问题描述】:

我想使用 Spark Streaming 从 Kafka 检索数据。现在,我想将我的数据保存在远程 HDFS 中。我知道我必须使用函数 saveAsText。但是,我不确切知道如何指定路径。

这样写对吗:

myDStream.foreachRDD(frm->{
    frm.saveAsTextFile("hdfs://ip_addr:9000//home/hadoop/datanode/myNewFolder");
});

ip_addr 是我的 hdfs 远程服务器的 IP 地址。 /home/hadoop/datanode/是我安装hadoop时创建的DataNode HDFS目录(不知道要不要指定这个目录)。和, myNewFolder 是我要保存数据的文件夹。

提前致谢。

亚西尔

【问题讨论】:

    标签: hadoop apache-spark hdfs spark-streaming


    【解决方案1】:

    路径必须是 HDFS 中的目录。

    例如,如果您想将文件保存在 HDFS 中的根 / 路径下名为 myNewFolder 的文件夹中。

    使用的路径是hdfs://namenode_ip:port/myNewFolder/

    在执行 spark 作业时,将创建此目录 myNewFolder

    hdfs-site.xmldfs.datanode.data.dir给定的datanode数据目录是用来存放你存储在HDFS中的文件块的,不应作为HDFS目录路径引用。

    【讨论】:

    • 好的,谢谢,很清楚。在您的情况下,“端口”的价值是多少?
    • 你已经使用了9000作为端口,同样必须使用。这是在 core-site.xml 中为属性 fs.defaultFS 定义的 RPC 端口。
    • 我做了你告诉我的原因,但我没有看到任何新文件创建并且 spark 没有返回任何错误..
    • 奇怪!文件夹是否创建?另外请检查您是否可以访问远程 hdfs
    • 这些是 HDFS 文件,您应该使用 HDFS 特定的命令。参考here
    猜你喜欢
    • 1970-01-01
    • 2018-06-22
    • 2016-10-12
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 2018-10-31
    • 2017-08-29
    相关资源
    最近更新 更多