【问题标题】:How to write a string to a text file in HDFS?如何将字符串写入 HDFS 中的文本文件?
【发布时间】:2019-01-18 14:42:12
【问题描述】:

我有一个字符串,我想覆盖它并在 Scala 中编写一个 hdfs 文本文件。下面是我目前正在使用的代码。

import java.io.{BufferedOutputStream, FileOutputStream}

val fs = FileSystem.get(sc.hadoopConfiguration); 
val filename = "hdfs://<IP>:9000/path/to/save/mytext.conf"
val textout = fs.create(new Path(filename));

val value1 = 23
val value2 = 25

val os = java.io.BufferedOutputStream(textout)
os.write(("key1: " + value1 + "\n").getBytes("UTF-8"))
os.write(("key2: " + value2 + "\n").getBytes("UTF-8"))

os.close()

不幸的是,上面的代码给了我以下错误:

<console>:146: error: object java.io.BufferedOutputStream is not a value
       val os = java.io.BufferedOutputStream(textout)
                        ^

如何在 Scala 的 HDFS 中将我的键值对保存在文本文件中?

【问题讨论】:

  • val os = java.io.BufferedOutputStream(textout) 应该是 val os = new java.io.BufferedOutputStream(textout) 你不需要 new 用于案例类,因为伴随对象中的 apply 委托给构造函数。

标签: scala


【解决方案1】:
val conf = new SparkConf()
val sc = new SparkContext(conf)
val array = Array("Key1: 23", "Key2: 25")
sc.parallelize(array).repartition(1).saveAsTextFile("/tmp/myconf")

【讨论】:

  • 尽管此代码可能(或可能不会)解决问题,但好的答案应始终包含有关问题所在以及此代码如何提供帮助的说明。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-16
  • 1970-01-01
相关资源
最近更新 更多