【问题标题】:Found nothing in _spark_metadata在 _spark_metadata 中找不到任何内容
【发布时间】:2018-06-10 00:01:29
【问题描述】:

我正在尝试从特定文件夹读取 CSV 文件并将相同的内容写入本地 pc 上不同位置的其他 CSV 文件以用于学习目的。我可以读取文件并在控制台上显示内容。但是,如果我想将其写入指定输出目录中的另一个 CSV 文件,我会得到一个名为“_spark_metadata”的文件夹,其中不包含任何内容。

我一步一步把整个代码贴在这里:

创建 Spark 会话:

spark = SparkSession \
.builder \
.appName('csv01') \
.master('local[*]') \
.getOrCreate();

spark.conf.set("spark.sql.streaming.checkpointLocation", <String path to checkpoint location directory> )
userSchema = StructType().add("name", "string").add("age", "integer")

从 CSV 文件读取

df = spark \
.readStream \
.schema(userSchema) \
.option("sep",",") \
.csv(<String path to local input directory containing CSV file>)

写入 CSV 文件

df.writeStream \
.format("csv") \
.option("path", <String path to local output directory containing CSV file>) \
.start()

在“包含 CSV 文件的本地输出目录的字符串路径”中,我只得到一个不包含 CSV 文件的文件夹 _spark_metadata。

非常感谢您对此的任何帮助

【问题讨论】:

    标签: apache-spark pyspark spark-streaming


    【解决方案1】:

    您不使用 readStream 来读取静态数据。您可以使用它从文件添加到该文件夹的目录中读取。

    你只需要spark.read.csv

    【讨论】:

    • 我这样做是因为我想学习火花流部分,如果我写到控制台请注意 df.writeStream \ .format("console") \ .option("truncate", "false ") \ .start() \ .awaitTermination() .... 它显示了文件的内容,但问题在于 writeStream 到 csv 文件。
    • 如果你只做 spark.read.csv 它不是流数据集/数据帧
    • 再一次,为了将数据添加到输入流中,当前存在于文件夹中的 CSV 文件将不会被读取。必须在 Spark 启动后将它们移动到文件夹中
    • 我的错,所以问题是我对阅读 CSV 文件缺乏理解,而不是写作。是的,现在它也被写入了 CSV 文件 :) 但你能解释一下为什么输出以控制台格式显示
    • 您应该能够在 Spark 启动之前或之后发送 Kafka 数据。 Kafka 偏移量独立于 Spark 处理
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 2021-04-08
    相关资源
    最近更新 更多