在RDD forEach

时间:2018-01-27 22:32:10

标签: apache-spark spark-dataframe apache-spark-dataset

我正在编写一个Spark作业,从S3下载包含json行的文件,将它们转换为DataSet并将它们写入Parquet文件。

javaSparkContext.parallelize(files)
            .foreach((VoidFunction<String>) file -> {
                try {
                    List<String> jsons = Lists.newArrayList();
                    ... 
                    Dataset<String> eventsDS = spark.createDataset(jsons);
                    Dataset<Row> eventsDF = spark.read().json(eventsDS);
                    eventsDF.write().parquet("parquet/")
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            });

在我的笔记本电脑上运行时运行时的错误

java.lang.NullPointerException
    at org.apache.spark.sql.SparkSession.sessionState$lzycompute(SparkSession.scala:128)
    at org.apache.spark.sql.SparkSession.sessionState(SparkSession.scala:126)
    at org.apache.spark.sql.Dataset.<init>(Dataset.scala:170)
    at org.apache.spark.sql.Dataset$.apply(Dataset.scala:61)
    at org.apache.spark.sql.SparkSession.createDataset(SparkSession.scala:457)
    at org.apache.spark.sql.SparkSession.createDataset(SparkSession.scala:494)
    at com.amazon.mobiletargeting.ParquetExporter.lambda$export$faf5744a$1(ParquetExporter.java:166)

我的问题是以Why does this Spark code make NullPointerException?

的副本为借口进行投票

我更新了下面的评论,说明我的Spark数据集不是在UDF的上下文中创建的,而是在RDD上的forEach中创建的。

任何建议都非常感谢! 兰吉特

0 个答案:

没有答案