Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop Spark似乎不像Hive那样使用同一个仓库_Hadoop_Apache Spark_Hive_Apache Spark Sql_Hiveql - Fatal编程技术网

Hadoop Spark似乎不像Hive那样使用同一个仓库

Hadoop Spark似乎不像Hive那样使用同一个仓库,hadoop,apache-spark,hive,apache-spark-sql,hiveql,Hadoop,Apache Spark,Hive,Apache Spark Sql,Hiveql,我已经开始在我的Eclipse上使用Spark 2.0,通过创建一个maven项目并获取所有最新的依赖项。我能够毫无问题地运行配置单元查询。我担心Spark会为hive创建另一个仓库,而不会使用我想要的数据仓库。因此,我服务器上的所有配置单元表都无法将这些配置单元表读入Spark数据集中并进行任何转换。我只能创建和处理新表,但我想在配置单元中读取我的表 My hive-site.xml:- <configuration><property> <name>j

我已经开始在我的Eclipse上使用Spark 2.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>

javax.jdo.option.ConnectionURL
jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true
元数据存储在MySQL服务器中
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
MySQL JDBC驱动程序类
javax.jdo.option.ConnectionUserName
蜂巢用户
用于连接到mysql服务器的用户名
javax.jdo.option.ConnectionPassword
根
连接到mysql服务器的密码
hive.metastore.warehouse.dir
/usr/local/Cellar/hive–1.1.0/apache-hive-1.1.0-bin/spark-warehouse
仓库的默认数据库的位置
在hive-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>

据我所知,您可以从蜂巢/直线进行查询,但不能使用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-site.xml中的配置单元属性(如
hive.metastore.warehouse.dir
hive.metastore.uris
)与上述属性是否存在任何差异。

您应该在
spark defaults.conf
中进行配置:


spark.sql.warehouse.dirhdfs://MA:8020/user/hive/warehouse


Spark为蜂巢创建另一个仓库。。。。。它存储哪个hdfs路径?您使用的是derby db吗?我希望它使用与普通配置单元使用的相同的db,这样我就可以访问默认配置单元表。您可以共享hive-site.xmlive吗?我用hive-site.xmlive编辑了这个问题。嘿,我也面临同样的问题。你能告诉我你是怎么解决的吗?感谢$SPARK_CONF,因为我在maven项目中做了这件事。。我们没有任何$SPARK_CONF目录。我所做的就是获取spark依赖项并将其添加到pom中,然后运行spark安装在哪里?如果我使用它的依赖项,我不需要安装。我们在查找表时没有提到用户名。它是db名称,但存在于配置单元中的db将不存在于spark配置单元中。我没有打印您提到的配置的选项,因为我使用SparkSession而不是HiveContext,因为它是Spark 2.0。您可以尝试上面的配置吗?是的,我今天就尝试了。它显示与此SparkSession实例相关的所有配置。如果hive使用的hive-site.xml和此嵌入式spark程序中的属性“hive.metastore.warehouse.dir”相同,则它应该能够将其保存在同一数据库中。因为即使为该属性指定了相同的值,它似乎也不会将元数据保留在相同的位置,也不会通过spark.hmm访问配置单元表,因此在
hive.metastore.warehouse.dir
的某个地方可能会出现某些不匹配的疑问,我必须更改xml才能使用远程配置单元仓库吗?
  //fetch metadata data from the catalog
    spark.catalog.listDatabases.show(false)
    spark.catalog.listTables.show(false)