将流数据下沉到Parquet文件/将Java Stream转换为Spark的DataFrame

时间:2017-05-16 12:35:59

标签: apache-spark java-stream spark-dataframe parquet

我正在从一些API读取数据到自定义类的Java流(A)。目前我正在将这些数据下载到CSV文件中,但我想将这些文件更改为Parquet文件。基于属性将数据分成多个文件(即,基于该属性分组)。有没有一种简单(推荐)的方法来使用Spark或直接从Java Streams实现这一点?

数据可能会变得非常大(最多20 GB),因此我不能简单地将其作为列表收集,然后将其一次性写入。它应该沉没。

我在考虑将流转换为Spark的DataFrame,然后将此DataFrame写入Parquet文件。如果这可以帮助我提供大量的数据,请告诉我如何将Java Stream转换为Spark的DataFrame?如果没有,请提出另一种方法来实现这一目标。

我当前的代码看起来像这样(我已将代码简化为可读):

Stream<A> data = apiService.getData();
data.forEach(instance -> {
  // This function simply returns an instance of a custom class that takes care of sinking the data into a CSV file.
  // The file is selected within the function based on a single attribute's value of the data instance.
  getTheAppropriateSinkFor(instance).add(instance);
});

0 个答案:

没有答案