作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 Spark 程序(在 Scala 中)和一个 SparkContext
。我正在使用 RDD
的 saveAsTextFile
编写一些文件。在我的本地机器上,我可以使用本地文件路径,它与本地文件系统一起工作。在我的集群上,它适用于 HDFS。
我还想写入其他任意文件作为处理结果。我在我的本地机器上将它们作为常规文件写入,但希望它们进入集群上的 HDFS。
SparkContext
似乎有一些与文件相关的方法,但它们似乎都是输入而不是输出。
我该怎么做?
最佳答案
感谢 marios 和 kostya,但是从 Spark 将文本文件写入 HDFS 只需几个步骤。
// Hadoop Config is accessible from SparkContext
val fs = FileSystem.get(sparkContext.hadoopConfiguration);
// Output file can be created from file system.
val output = fs.create(new Path(filename));
// But BufferedOutputStream must be used to output an actual text file.
val os = BufferedOutputStream(output)
os.write("Hello World".getBytes("UTF-8"))
os.close()
请注意,已建议的FSDataOutputStream
是Java 序列化对象输出流,而不是文本输出流。 writeUTF
方法看似写入纯文本,但它实际上是一种包含额外字节的二进制序列化格式。
关于scala - 我可以从 Spark 程序而不是 RDD 写入纯文本 HDFS(或本地)文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32952121/
我是一名优秀的程序员,十分优秀!