小编lbz*_*lbz的帖子

在 Spark Structured Streaming 中指定“basePath”选项

basePath在 Spark Structured Streaming (in Java) 中读取分区数据时是否可以设置该选项?我只想加载特定分区中的数据,例如basepath/x=1/,但我也想x作为列加载。设置basePath非流式数据帧的方式似乎不起作用。

这是一个最小的例子。我有一个包含以下数据的数据框:

+---+---+
|  a|  b|
+---+---+
|  1|  2|
|  3|  4|
+---+---+
Run Code Online (Sandbox Code Playgroud)

我将此作为 Parquet 文件写入名为x=1.

以下代码(带有常规的非流数据帧)工作正常:

Dataset<Row> data = sparkSession.read()
  .option("basePath", basePath)
  .parquet(basePath + "/x=1");

data.show();
Run Code Online (Sandbox Code Playgroud)

这产生了预期的结果:

+---+---+---+
|  a|  b|  x|
+---+---+---+
|  1|  2|  1|
|  3|  4|  1|
+---+---+---+
Run Code Online (Sandbox Code Playgroud)

但是,以下(使用 Structured Streaming API)不起作用:

StructType schema = data.schema(); // data as defined above

Dataset<Row> streamingData = sparkSession.readStream()
  .schema(schema)
  .option("basePath", basePath)
  .parquet(basePath …
Run Code Online (Sandbox Code Playgroud)

java apache-spark spark-streaming

6
推荐指数
1
解决办法
8725
查看次数

标签 统计

apache-spark ×1

java ×1

spark-streaming ×1