保存

时间:2016-11-05 14:40:29

标签: apache-spark dataset apache-spark-sql

我使用spark从数据库中读取并在hdfs中写为镶木地板文件。这是代码段。

private long etlFunction(SparkSession spark){
    spark.sqlContext().setConf("spark.sql.parquet.compression.codec", "SNAPPY");    
    Properties properties = new Properties();
    properties.put("driver","oracle.jdbc.driver");
    properties.put("fetchSize","5000");     
    Dataset<Row> dataset = spark.read().jdbc(jdbcUrl, query, properties);
    dataset.write.format("parquet”).save("pdfs-path");  
    return dataset.count();
}

当我查看spark ui时,在写入期间,我有写入的记录统计信息,在查询计划下的sql选项卡中可见。

虽然计数本身是一项繁重的任务。

有人可以建议以最优化的方式获得最佳方式。

要添加,有一个解决方案提到重复,涉及使用sparkListener进行计数。我正在大量重用sparkSession,因此实现起来会更加棘手。

谢谢大家..

1 个答案:

答案 0 :(得分:1)

Parquet非常快,所以你可以尝试return spark.sqlContext().read.parquet("path").count()