2016-07-15 2 views
2

spark로 분석하려고합니다. 나는 결과를 정확하게 보여주는 foreach와 같은 쿼리를 시도했지만 show 나 SQL을 사용하면 이상하게 보이지만 아무것도 표시하지 않습니다.결과 표시에 sql이 이상하게 표시됩니다. Spark

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

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

적절한 장치를 제공하지만 사용하는 경우 만 표시하거나 모든 SQL : I 그래프와 차트를 필요

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

%sql 
select distinct device from TestTable1 where id = 23233 

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

, 그래서 %의 SQL을 사용하고 싶습니다. 그러나 이것은 $ sql로 이상한 결과를 제공합니다. 어떤 사람이 왜 내가 이렇게 좋아하는지 알 수 있습니까?

+0

일부 보이지 않는 접두어 같이 데이터에 특별한 것이 있습니까? sqlContext.sql ("은행과 다른 작업 선택"). Zeppelin Tutorial 노트북에서 완벽하게 작동합니다. –

답변

0

show은 데이터 형식화 된 출력이지만 collect.foreach(println)은 단지 데이터를 인쇄하고 있습니다. 그들은 서로 다른 두 가지입니다. 특정 방식으로 데이터의 서식을 지정하려면 foreach을 사용하십시오 ... 의 시퀀스를 인쇄하고 있습니다. 각 열에 대해 고유 한 형식을 지정하려면 행에서 데이터를 가져와야합니다.

사용중인 스파크 및 제플린의 버전을 제공하면 더 구체적인 정보를 제공 할 수 있습니다.

0

Zeppelin의 그래프와 차트가 필요하기 때문에 %sql을 사용한다고하셨습니다. 할 필요가 없다면 %sql으로 바꾸지 않을 것입니다.

당신은 예를 들어, z.show()를 사용하여 스파크 dataframes를 사용하여 부착 할 수 있습니다 위의에서

%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) 다른 차트 유형에 대한 옵션을 기본 제플린 테이블 뷰를 렌더링합니다.