2016-08-04 2 views
1

Я новичок в искры и пытаюсь запустить некоторые запросы на таблицы тестов tpcds, используя HortonWorks Sandbox. http://www.tpc.org/tpcds/ Нет проблем при использовании улья через оболочку или улей-вид на песочнице. Проблема в том, что я не знаю, как подключиться к базе данных, если я хочу использовать искру. Как я могу использовать базу данных улья в искры для запуска запросов? Единственное решение, которое я знаю до сих пор, состоит в том, чтобы вручную перестроить каждую таблицу и загрузить в нее данные, используя следующие коды scala, что не является лучшим решением.Использование базы данных о кустах в искры

scala> val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc) 
scala> sqlContext.sql("CREATE TABLE IF NOT EXISTS employee(id INT, name STRING, age INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'") 
scala> sqlContext.sql("LOAD DATA LOCAL INPATH 'employee.txt' INTO TABLE employee") 
scala> val result = sqlContext.sql("FROM employe SELECT id, name, age") 
scala> result.show() 

Я также читал некоторые о медоносной site.xml, но я не знаю, где его найти, и какие изменения, чтобы сделать на нем, чтобы подключиться к базе данных.

+0

сайт Улей (и другие конфигурационные файлы) находятся в место, где вы устанавливаете двоичные файлы Hadoop. –

+0

Если вы используете песочницу, вам нужно получить все, что вам нужно, здесь. Последние несколько запросов команд из существующей таблицы Hive http://hortonworks.com/hadoop-tutorial/using-hive-with-orc-from-apache-spark/ –

ответ

2

Нет необходимости подключаться к конкретной базе данных при использовании Spark и HiveContext.

Вам просто нужно скопировать файл «hive-site.xml» в папку Spark conf (или вы также можете создать символическую ссылку).

cp $HIVE_HOME/conf/hive-site.xml $SPARK_HOME/conf/ 

Затем в Спарк вы можете сделать что-то подобное (я не являюсь пользователем Scala, так что синтаксис может быть неправильным):

val hc = new org.apache.spark.sql.hive.HiveContext(sc) 
val result = hc.sql("SELECT col1, col2, col3 FROM dbname.tablename") 
result.show()