结果显示与sql:Spark显示奇怪

时间:2016-07-15 22:36:15

标签: apache-spark apache-spark-sql apache-zeppelin

我正在尝试用spark做一些分析。我尝试使用foreach进行相同的查询,正确显示结果但是如果我使用show或者在sql中它很奇怪,它没有显示任何内容。

obj/rw_mod.o

提供适当的设备,但如果我只使用show或任何sql:

sqlContext.sql("select distinct device from TestTable1 where id = 23233").collect.foreach(println) 

[ipad]
[desktop]
[playstation]
[iphone]
[android]
[smarTv]

我需要图表和图表,所以我想使用%sql。但是这会给$ sql带来奇怪的结果。有没有人知道我为什么会这样?

2 个答案:

答案 0 :(得分:0)

show是数据的格式化输出,而collect.foreach(println)仅打印Row数据。他们是两个不同的东西。如果您想以特定方式格式化数据,请坚持使用foreach ...请记住,您正在打印一系列Row。如果您想为每列获取自己的格式,则必须从行中提取数据。

如果您提供正在使用的spark和zeppelin版本,我可能会提供更具体的信息。

答案 1 :(得分:0)

你说你正在使用%sql,因为你需要Zeppelin的图表和图表 - 即。如果你不需要,你就不会交换到%sql

您可以使用z.show()来坚持使用Spark数据帧,例如:

%pyspark 

df = sqlContext.createDataFrame([
                                    (23233, 'ipad'), 
                                    (23233, 'ipad'),
                                    (23233, 'desktop'), 
                                    (23233, 'playstation'),
                                    (23233, 'iphone'),
                                    (23233, 'android'),
                                    (23233, 'smarTv'),
                                    (12345, 'ipad'),
                                    (12345, 'palmPilot'),
                                ], ('id', 'device'))

foo = df.filter('id = 23233').select('device').distinct()
z.show(foo)

在上文中,z.show(foo)呈现默认的Zeppelin表视图,其中包含其他图表类型的选项。