我正在尝试用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带来奇怪的结果。有没有人知道我为什么会这样?
答案 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表视图,其中包含其他图表类型的选项。