2016-11-11 3 views
1

Я начал использовать Spark 2.0 на своем Eclipse, создав проект maven и получив во всех последних зависимостях. Я могу без проблем запускать запросы на улей. Меня беспокоит, что Spark создает другой склад для улья и не использует хранилище данных, которое я хочу. Итак, все таблицы улья, которые у меня есть на моем сервере, я не могу прочитать эти таблицы улья в своих наборах данных Spark и делать какие-либо преобразования. Я могу только создавать и работать с новыми таблицами, но я хочу читать мои таблицы в улье.Spark, похоже, не использует тот же склад, который использует Hive

Мой улей-site.xml: -

<configuration><property> 
    <name>javax.jdo.option.ConnectionURL</name> 
    <value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true</value> 
    <description>metadata is stored in a MySQL server</description></property>  <property> 
    <name>javax.jdo.option.ConnectionDriverName</name> 
    <value>com.mysql.jdbc.Driver</value> 
    <description>MySQL JDBC driver class</description></property><property> 
    <name>javax.jdo.option.ConnectionUserName</name> 
    <value>hiveuser</value> 
    <description>user name for connecting to mysql server</description></property><property> 
    <name>javax.jdo.option.ConnectionPassword</name> 
    <value>root</value> 
    <description>password for connecting to mysql server</description></property><property> 
    <name>hive.metastore.warehouse.dir</name> 
    <value>/usr/local/Cellar/hive–1.1.0/apache-hive-1.1.0-bin/spark-warehouse</value> 
    <description>location of default database for the warehouse</description></property></configuration> 
+0

Spark создает еще один склад для улья ..... в каком пути hdfs он хранится? Вы используете derby db? –

+0

Я хочу, чтобы он использовал тот же db, что и обычный куст, так что я могу получить доступ к таблицам улья по умолчанию –

+0

вы можете делиться hive-site.xml –

ответ

0

В улья site.xml добавить,

<property> 
    <name>hive.metastore.uris</name> 
    <value>thrift://HOST_IP_ADDRESS:9083</value> 
    <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description> 
    </property> 

рестарт улей службы

, а затем установить,

1) Скопируйте файл hive-site.xml из каталога $ HIVE_CONF в $ SPARK_CONF.

или 2)

HiveContext hiveContext = new HiveContext(sc); 

hiveContext.setConf("hive.metastore.uris", "thrift://HOST_IP_ADDRESS:9083"); 
+0

Какой $ SPARK_CONF как им это делать в проекте maven .. У нас нет каталога $ SPARK_CONF.Все, что я делаю, это получить зависимости от искры и добавить в pom и запустить –

+0

, где установлена ​​ваша искра –

+0

Мне не нужно устанавливать, если я использую его зависимости –

2

Как я понял, вы можете запросить из улья/Билайна вы не можете иметь возможность запрашивать ту же таблицу с искровым программы

  • вы можете распечатать все конфигурации для проверки как это из вашей искровой программы.

Поскольку вы используете искру 2.0, пожалуйста, проверьте ниже искровой сессии

val spark = SparkSession 
    .builder() 
    .appName("yourappname") 
    .config("spark.sql.warehouse.dir", warehouseLocation) 
    .enableHiveSupport() 
    .getOrCreate() 

SparkSession выставляет «каталог» в качестве публичного экземпляра, который содержит методы, которые работают с metastore (т.е. каталог данных) , Поскольку эти методы возвращают набор данных, вы можете использовать API-интерфейс Dataset для доступа или просмотра данных .

Также попробуйте ниже

//fetch metadata data from the catalog 
    spark.catalog.listDatabases.show(false) 
    spark.catalog.listTables.show(false) 

, а затем распечатать spark.conf.getAll().mkString("\n"))

вы можете увидеть, является ли какая-то разница в улье свойств (например, hive.metastore.warehouse.dir или hive.metastore.uris), которые были там в улье-site.xml с выше свойств.

+0

, мы не будем указывать имя пользователя при поиске таблицы. его имя db, но db, существующее в улье, не будет существовать в искровом улье. и у меня нет возможности печатать конфигурации, как вы уже упоминали, потому что Im использует SparkSession вместо HiveContext, потому что это Spark 2.0 –

+0

PLS проверяет обновленный ответ. Надеюсь, это поможет. –

+0

Ты мог бы попробовать? –