Улей запросов Pyspark очень медленный, даже окончательный результат довольно мал

Я использую spark 2.0.0 для запроса таблицы кустов:

мой sql:

select * from app.abtestmsg_v limit 10

Да, я хочу получить первые 10 записей из представления app.abtestmsg_v.

Когда я запускаю этот sql в spark-shell, он работает очень быстро, ИСПОЛЬЗУЙТЕ около 2 секунд.

Но затем возникает проблема, когда я пытаюсь реализовать этот запрос с помощью своего кода Python.

Я использую Spark 2.0.0 и пишу очень простую программу pyspark, код:

Ниже мой код pyspark:

from pyspark.sql import HiveContext
from pyspark.sql.functions import *
import json
hc = HiveContext(sc)
hc.setConf("hive.exec.orc.split.strategy", "ETL")
hc.setConf("hive.security.authorization.enabled",false)
zj_sql = 'select * from app.abtestmsg_v limit 10'
zj_df = hc.sql(zj_sql)
zj_df.collect()

Ниже мой scala-код:

val hive = new org.apache.spark.sql.hive.HiveContext(sc)
hive.setConf("hive.exec.orc.split.strategy", "ETL")
val df = hive.sql("select * from silver_ep.zj_v limit 10")
df.rdd.collect()

Из информационного журнала я нахожу: хотя я использую «limit 10», чтобы сообщить spark, что мне нужны только первые 10 записей, но spark по-прежнему сканирует и читает все файлы (в моем случае исходные данные этого представления содержит 100 файлов, и размер каждого файла составляет около 1 ГБ) представления. Таким образом, имеется около 100 задач, каждая задача считывает файл, и все задачи выполняются последовательно. Я трачу почти 15 минут на выполнение этих 100 задач!!!!! но я хочу просто получить первые 10 записей.

Итак, я не знаю, что делать и что не так;

Кто-нибудь может дать мне несколько предложений?


person wuchang    schedule 17.02.2017    source источник
comment
Возникла такая же проблема, stackoverflow.com /questions/47565131/ Вы решили проблему?   -  person no123ff    schedule 30.11.2017