2016-07-15 5 views
2

Я пытаюсь сделать некоторый анализ с помощью искры. Я попробовал тот же запрос с 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:

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

Вы заявили, что используете %sql, потому что вам нужны графики и диаграммы Цеппелина - т. Е. вы не поменяли бы %sql, если бы вам не пришлось.

Вы можете просто придерживаться с использованием искрового dataframes с помощью z.show(), например:

%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) визуализирует вид Цеппелина таблицы по умолчанию, с параметрами для других типов диаграмм.

Смежные вопросы