spark似乎不像hive那样使用同一个仓库

ckocjqey  于 2021-06-02  发布在  Hadoop
关注(0)|答案(3)|浏览(374)

我已经开始在我的eclipse上使用spark2.0,通过创建一个maven项目并获得所有最新的依赖关系。我可以毫无问题地运行配置单元查询。我担心的是spark会为hive创建另一个仓库,而不使用我想要的数据仓库。因此,我服务器上的所有配置单元表,我无法将这些配置单元表读入spark数据集并进行任何转换。我只能创建和处理新表,但我想在配置单元中读取我的表。
my 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>
vyu0f0g1

vyu0f0g11#

在hive-site.xml add中,

<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\u conf dir复制到$spark\u conf dir
或2)

HiveContext hiveContext = new HiveContext(sc);

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

evrscar22#

你应该进去 spark-defaults.conf : spark.sql.warehouse.dir hdfs://MA:8020/user/hive/warehouse 从http://spark.apache.org/docs/latest/sql-data-sources-hive-tables.html

qf9go6mv

qf9go6mv3#

据我所知,你可以从Hive/直线查询你不能用spark程序查询同一个表
你可以打印所有的配置来验证你的spark程序。
由于您使用的是spark 2.0,请验证以下spark会话

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

sparksession将“catalog”公开为一个公共示例,该示例包含使用元存储的方法(即数据目录)。由于这些方法返回数据集,因此可以使用数据集api访问或查看数据。
也可以在下面试试

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

然后打印 spark.conf.getAll().mkString("\n")) 您可以查看Hive属性(如 hive.metastore.warehouse.dir 或者 hive.metastore.uris )它们位于hive-site.xml中,具有上述属性。

相关问题