【问题标题】:Result display showing weird with sql : Spark结果显示用 sql 显示奇怪:Spark
【发布时间】:2016-11-19 05:48:59
【问题描述】:

我正在尝试使用 spark 进行一些分析。我尝试了与 foreach 相同的查询,它正确显示了结果,但是如果我使用 show 或在 sql 中,这很奇怪,它什么也没显示。

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

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

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

sqlContext.sql("select distinct device from TestTable1 where id = 23233").show()

%sql
select distinct device from TestTable1 where id = 23233

+-----------+
|device     |
+-----------+
|        |
|    |
|ion|
|       |
|    |
|     |
+-----------+

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

【问题讨论】:

  • 您的数据中是否有什么特别之处,比如一些不可见的前缀? sqlContext.sql("select distinct job from bank").show work perfect on Zeppelin Tutorial notebook。

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您说您使用 %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 表视图,以及其他图表类型的选项。

    【讨论】:

      猜你喜欢
      • 2016-10-04
      • 2015-01-13
      • 2018-05-28
      • 2013-06-27
      • 1970-01-01
      • 2021-12-20
      • 2017-08-26
      • 2016-02-13
      • 2011-11-01
      相关资源
      最近更新 更多