Я запускаю CDH 5.4.4 (который связывает Spark 1.3.0) и хотел бы прочитать таблицу Hive в фреймворк Spark.как запросить улей от Spark на CDH 5.4.4
Глядя на документации, это говорит о том, что мы можем сделать следующее:
from pyspark.sql import HiveContext
sqlContext = HiveContext(sc)
results = sqlContext.sql("SHOW TABLES").collect()
... при условии, что Спарк был построен с -Phive
и -Phive-thriftserver
флагами.
Я не уверен, что в сборке Cloudera установлены эти флаги.
Когда я бегу сниппет, он возвращает следующую ошибку:
15/07/10 16:54:10 WARN HiveMetaStore: Retrying creating default database after error: Error creating transactional connection factory
javax.jdo.JDOFatalInternalException: Error creating transactional connection factory
У меня есть два вопроса:
- делает искрообразование Cloudera имеют в
hive
иhive-thriftserver
флаги установлены? - Что мне нужно сделать, чтобы запросить улей от искры?
Update
Это почти работает:
Я создал символическую ссылку из $SPARK_HOME/conf/
в hive-site.xml
, т.е.
ln -s /etc/hive/conf.cloudera.hive/hive-site.xml $SPARK_HOME/conf/hive-site.xml
Затем я перезапустил службу Spark, и был в состоянии получить доступ к Улей , К сожалению, символическая ссылка не выдержала перезагрузки.
Не уверен, если это поможет вам, но ваш код работает для меня на Amazon EMR из коробки ... так что одним из вариантов было бы использовать EMR? Также, возможно, проверьте, что «результаты» определенно не создавались - для меня, когда я запускал команду, у меня все еще появились сообщения об ошибках, и все же правильный результат все еще был создан. – maxymoo
Спасибо @maxymoo. Отрадно слышать, что он работает на AWS. В этом случае у меня много данных, поэтому было бы дорого и много времени, чтобы переместить его в AWS. Кроме того, сделав инвестиции в собственное оборудование, было бы собственной целью запустить счет AWS. Цените мысль/предложение. –
не беспокоится, и рад, что вы приближаетесь. что вы имеете в виду «не переживает перезагрузки»? вы пытались поместить эту строку в свой '.bash_profile'? – maxymoo