Apache spark没有提供正确的输出

时间:2017-08-10 05:54:03

标签: apache-spark apache-spark-sql

我是初学者,想要了解火花。我正在使用spark-shell并进行一些实验以获得快速结果我希望从spark worker节点获得结果。

我总共有两台机器,其中,我在一台机器上有一个驱动程序和一名工人,另一台机器上有另一名工人。

当我想要获得计数时,结果不是来自两个节点。我有一个JSON文件可供阅读并进行一些性能检查。

这是代码:

spark-shell --conf spark.sql.warehouse.dir=C:\spark-warehouse --master spark://192.168.0.31:7077
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val dfs = sqlContext.read.json("file:///C:/order.json")
dfs.count

我有order.JSON文件在两台机器上分发。但后来我也得到了不同的输出

1 个答案:

答案 0 :(得分:2)

1.如果您在不同节点上运行火花,则必须具有S3或HDFS路径,确保每个节点都可以访问您的数据源。

val dfs = sqlContext.read.json("file:///C:/order.json")

更改为

val dfs = sqlContext.read.json("HDFS://order.json")

2.如果您的数据源非常小,那么您可以尝试使用Spark广播将这些数据共享给其他节点,然后每个节点都有一致的数据。https://spark.apache.org/docs/latest/rdd-programming-guide.html#shared-variables

3.为了在控制台中打印日志 请在spark conf文件夹中配置log4j文件。 详情访问Override Spark log4j configurations