Невозможно выполнить какую-либо функцию над фреймом данных из-за истечения времени ожидания соединения сокета при использовании pyspark с Presto в EMR - PullRequest
1 голос
/ 01 июля 2019

Я хочу подключить свою искру, развернутую в EMR, к Presto, которая использует Hive в качестве мета-хранилища и S3 в качестве хранилища данных. Раньше я даже не мог выполнить загрузку информационного кадра из функции spark.read, доступной в pyspark, но тогда этот ответ решил эту проблему для меня. Однако из-за отложенного выполнения было обнаружено, что во время выборки счетчика происходит сбой запроса с ошибкой: истекло время ожидания соединения сокета.

Следует отметить, что тот же запрос select * from may30_1 в том же экземпляре с использованием CLI Presto, я смог получить результаты. Таким образом, это не относится к каким-либо сетевым соединениям между серверами.

Это код, который используется для выборки кадра данных:

jdbcDF = spark_session.read \
    .format("jdbc") \
    .option("driver", "com.facebook.presto.jdbc.PrestoDriver") \
    .option("url", "jdbc:presto://my_presto_ip:8080/hive/default") \
    .option("user", "my_user") \
    .option("dbtable", "may30_1") \
    .load()

Работающие линии:

>>> jdbcDF.head
<bound method DataFrame.head of DataFrame[id: int, name: string, alignment: string, gender: string, eyecolor: string, race: string, haircolor: string, publisher: string, skincolor: string, height: int, weight: int, _athena_row_number_: bigint, _athena_timestamp_: timestamp, _athena_commit_id_: string]>

Теперь тот же самый head, если ему дан аргумент, скажем, 2, не будет работать, поскольку ему нужны данные.

>>> jdbcDF.head(3)

Здесь вы получите полный возврат.

Любой запрос, который принесет данные, выдает ошибки.

...