Проблема с Pyspark при использовании * .ec2.internal ip вместо реального ip при запросе hive hdfs - PullRequest
0 голосов
/ 15 марта 2019

Как мне исправить адрес запроса в Pyspark при использовании операторов select?

У меня проблема в том, что я чувствую, что нахожусь на грани исправления, но понятия не имею, что я делаю неправильно. Я пытаюсь подключиться к удаленному экземпляру Hive в службе aws emr с помощью pyspark через vpc.

Вот мой код:

from pyspark.sql import SparkSession
from pyspark.sql import Row
spark = SparkSession \
  .builder \
  .appName("Python Spark SQL Hive integration example") \
  .enableHiveSupport() \
  .getOrCreate()
spark.sql("show tables").show()

Он отлично работает для вывода таблиц из моего hive hdfs. Когда я пытаюсь выполнить следующую команду:

spark.sql("select * from default.demo_pharmacy").show()

Я получаю следующую ошибку:

py4j.protocol.Py4JJavaError: An error occurred while calling o35.showString.
: java.lang.IllegalArgumentException: java.net.UnknownHostException: ip-123-1-12-123.ec2.internal

Моя проблема в том, что я понятия не имею, где находится pyspark: ip-123-1-12-123.ec2.internal .

Я предпринял следующие шаги:

  • ssh в удаленный emr master spark / conf и изменил все экземпляры ip-123-1-12-123.ec2.internal на 123.1.12.123 .
  • перезапустил hadoop-yarn-resourcemanager и сервер spark-history в удаленном мастере emr
  • настроен файл hive-site.xml с:

    <property> <name>hive.metastore.uris</name> <value>thrift://123.1.12.123:9083</value> <description>JDBC connect string for a JDBC metastore</description> </property>

Но ничего, что я делаю, похоже, не работает. Я продолжаю получать неизвестные исключения хоста, так как у меня есть кластер ульев за vpc aws.

Поэтому мой вопрос сводится к следующему: Как мне исправить адрес запроса в Pyspark при использовании операторов select? Заранее спасибо за помощь!

...