小编Dig*_*ure的帖子

如何控制从 Spark DataFrame 写入的输出文件的数量?

使用 Spark Streaming 从 Kafka 主题读取 Json 数据。
我使用 DataFrame 来处理数据,稍后我希望将输出保存到 HDFS 文件。问题是使用:

df.write.save("append").format("text")
Run Code Online (Sandbox Code Playgroud)

产生许多文件,有些文件很大,有些甚至是 0 字节。

有没有办法控制输出文件的数量?另外,为了避免“相反”的问题,是否有办法限制每个文件的大小,以便当当前达到一定大小/行数时将写入新文件?

scala apache-kafka apache-spark spark-streaming apache-spark-sql

5
推荐指数
1
解决办法
8832
查看次数

如何在 spark 2.X 中验证 Json 模式?

使用Spark流(用Scala编写)从 Kafka 读取消息。消息都是 Json 格式的字符串。

在局部变量中定义预期的模式,expectedSchema 然后将 RDD 中的字符串解析为 Json

spark.sqlContext.read.schema(schema).json(rdd.toDS())
Run Code Online (Sandbox Code Playgroud)

问题: Spark 将处理所有记录/行,只要它有一些我尝试读取的字段,即使输入行(字符串)的实际 Json 格式(即架构)与我的expectedSchema.

假设预期的模式看起来像这样(在 Json 中):{"a": 1,"b": 2, "c": 3} 并且输入行看起来像这样: {"a": 1, "c": 3} Spark 将处理输入而不会失败。

我尝试使用此处描述的解决方案:How do I apply schema with nullable = false to json reading

assert(readJson.schema == expectedSchema)永远不会失败,即使我故意发送带有错误 Json 模式的输入行也是如此。

  1. 有没有办法让我验证给定输入行的实际模式与我预期的模式相匹配?

  2. 有没有办法让我插入一个空值来“填充”“损坏”模式行中缺少的字段?

json scala apache-spark spark-streaming pyspark

5
推荐指数
0
解决办法
3685
查看次数