2016-11-05 38 views
-1

我使用spark从数据库中读取数据,并将其写入hdfs作为parquet文件。这是代码片段。保存后的Spark数据集计数

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(); 
} 

当我看到火花UI,写在我的下查询计划的书面记录,在SQL选项卡中看到的统计数据。

虽然伯爵本身是一项艰巨的任务。

有人可以建议以最优化的方式计算最佳方式。

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

感谢所有..

+0

[Spark:如何获取写入行数?]可能重复(http://stackoverflow.com/questions/37496650/spark-how-to-get-the-number-of-written-rows) – 2016-11-05 14:54:29

回答

1

实木复合地板是非常快的计数,所以你可以尝试return spark.sqlContext().read.parquet("path").count()

+0

这将返回一个数据集,我期待数长。 – rohit

+0

我忘记了计数,看到更新的答案。 – Mariusz

+0

以及在我的问题中进行计数的方式会有所不同。我正在计算我曾经用实木复合地板编写的相同数据集。 – rohit