标签: metastore

蜂巢中的Spark构建没有使用MySQL Metastore

我正在使用Apache Spark 2.1.1,我在$SPARK_HOME/conf文件夹中放了以下hive-site.xml :

<?xml version="1.0"?>
<configuration>
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://mysql_server:3306/hive_metastore?createDatabaseIfNotExist=true</value>
  <description>JDBC connect string for a JDBC metastore</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
  <description>Driver class name for a JDBC metastore</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hive</value>
  <description>username to use against metastore database</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>password</value>
  <description>password to use against metastore database</description>
</property>
<property>
  <name>hive.metastore.schema.verification</name>
  <value>false</value>
  <description>password to use against metastore database</description>
</property>
<property>
  <name>hadoop.tmp.dir</name>
  <value>${test.tmp.dir}/hadoop-tmp</value>
  <description>A base for other temporary directories.</description>
</property>
<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>hdfs://hadoop_namenode:9000/value_iq/hive_warehouse/</value>
  <description>Warehouse Location</description>
</property>
</configuration>
Run Code Online (Sandbox Code Playgroud)

当我启动thrift服务器时,我的MySQL数据库上创建了Metastore模式但未使用,而是使用了Derby.

在thrift服务器日志文件中找不到任何错误,唯一引起我注意的是它尝试在first( …

mysql hive metastore apache-spark spark-thriftserver

8
推荐指数
1
解决办法
1272
查看次数

当我使用'STORED AS AVRO'子句创建一个hive表时,存储Avro架构的位置?

创建一个支持Avro数据的配置单元至少有两种不同的方法:

1)基于Avro架构创建表(在此示例中存储在hdfs中):

CREATE TABLE users_from_avro_schema
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
TBLPROPERTIES ('avro.schema.url'='hdfs:///user/root/avro/schema/user.avsc');
Run Code Online (Sandbox Code Playgroud)

2)通过使用STORED AS AVRO子句显式指定hive列​​来创建表:

CREATE TABLE users_stored_as_avro(
  id INT,
  name STRING
) STORED AS AVRO;
Run Code Online (Sandbox Code Playgroud)

我是否正确在第一种情况下,users_from_avro_schema表的元数据不存储在Hive Metastore中,而是从SERDE类中推断出读取avro模式文件?或者表元数据存储在Metastore中,添加在表的创建上,但是什么是用于将hive元数据与Avro架构同步的策略?我的意思是两种情况:更新表元数据(添加/删除列)和通过更改avro.schema.url属性更新Avro架构.

在第二种情况下,当我调用时DESCRIBE FORMATTED users_stored_as_avro没有avro.schema.*定义属性,所以我不知道哪个Avro架构用于读/写数据,它是根据存储在Metastore中的表的元数据动态生成的吗?

这个Programming Hive书的片段讲述了关于SerDe类中列的信息,但另一方面,HIVE-4703from deserializer列注释中删除了这个信息.我如何检查给定表(Metastore或Avro架构)的列类型的来源是什么?

schema hive avro metastore

6
推荐指数
2
解决办法
7029
查看次数

在IDEA中运行Hive项目上的Spark时创建事务连接工厂时出错

我正在尝试为Spark Streaming项目设置开发环境,该项目需要将数据写入Hive.我有一个集群有1个主服务器,2个从服务器和1个开发机器(在Intellij Idea 14中编码).

在spark shell中,一切似乎都运行正常,我可以使用DataFrame.write.insertInto("testtable")通过Spark 1.5将数据存储到Hive中的默认数据库中

但是,当在IDEA中创建scala项目并使用具有相同设置的相同集群运行它时,在Metastore数据库中创建事务连接工厂时会抛出Error,该数据库假定在mysql中为"metastore_db".

这是hive-site.xml:

<configuration>
<property>
  <name>hive.metastore.uris</name>
  <value>thrift://10.1.50.73:9083</value>
</property>
<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/user/hive/warehouse</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://10.1.50.73:3306/metastore_db?createDatabaseIfNotExist=true</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>sa</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>huanhuan</value>
</property>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我运行IDEA的机器,可以远程登录Mysql和Hive来创建表,所以应该没有权限问题.这是log4j输出:

> /home/stdevelop/jdk1.7.0_79/bin/java -Didea.launcher.port=7536 -Didea.launcher.bin.path=/home/stdevelop/idea/bin -Dfile.encoding=UTF-8 -classpath /home/stdevelop/jdk1.7.0_79/jre/lib/plugin.jar:/home/stdevelop/jdk1.7.0_79/jre/lib/deploy.jar:/home/stdevelop/jdk1.7.0_79/jre/lib/jfxrt.jar:/home/stdevelop/jdk1.7.0_79/jre/lib/charsets.jar:/home/stdevelop/jdk1.7.0_79/jre/lib/javaws.jar:/home/stdevelop/jdk1.7.0_79/jre/lib/jfr.jar:/home/stdevelop/jdk1.7.0_79/jre/lib/jce.jar:/home/stdevelop/jdk1.7.0_79/jre/lib/jsse.jar:/home/stdevelop/jdk1.7.0_79/jre/lib/rt.jar:/home/stdevelop/jdk1.7.0_79/jre/lib/resources.jar:/home/stdevelop/jdk1.7.0_79/jre/lib/management-agent.jar:/home/stdevelop/jdk1.7.0_79/jre/lib/ext/zipfs.jar:/home/stdevelop/jdk1.7.0_79/jre/lib/ext/sunec.jar:/home/stdevelop/jdk1.7.0_79/jre/lib/ext/sunpkcs11.jar:/home/stdevelop/jdk1.7.0_79/jre/lib/ext/sunjce_provider.jar:/home/stdevelop/jdk1.7.0_79/jre/lib/ext/localedata.jar:/home/stdevelop/jdk1.7.0_79/jre/lib/ext/dnsns.jar:/home/stdevelop/IdeaProjects/StreamingIntoHive/target/scala-2.10/classes:/root/.sbt/boot/scala-2.10.4/lib/scala-library.jar:/home/stdevelop/SparkDll/spark-assembly-1.5.0-hadoop2.5.2.jar:/home/stdevelop/SparkDll/datanucleus-api-jdo-3.2.6.jar:/home/stdevelop/SparkDll/datanucleus-core-3.2.10.jar:/home/stdevelop/SparkDll/datanucleus-rdbms-3.2.9.jar:/home/stdevelop/SparkDll/mysql-connector-java-5.1.35-bin.jar:/home/stdevelop/idea/lib/idea_rt.jar com.intellij.rt.execution.application.AppMain StreamingIntoHive 10.1.50.68 8080
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
15/09/22 19:43:18 INFO SparkContext: Running Spark version 1.5.0
15/09/22 19:43:21 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/09/22 19:43:22 …
Run Code Online (Sandbox Code Playgroud)

hive metastore apache-spark apache-spark-sql

6
推荐指数
1
解决办法
9941
查看次数

Hadoop Metastore不会初始化

序言:我是hadoop/hive的新手.已经安装了独立的hadoop,现在我正试图让hive工作.我一直收到关于初始化Metastore的错误,似乎无法弄清楚如何解决.(hadoop 2.7.2和hive 2.0)

HADOOP_HOME和HIVE_HOME设置

ubuntu15-laptop: ~ $>echo $HADOOP_HOME
/usr/hadoop/hadoop-2.7.2

ubuntu15-laptop: ~ $>echo $HIVE_HOME
/usr/hive
Run Code Online (Sandbox Code Playgroud)

hdfs正在运行

ubuntu15-laptop: ~ $>hadoop fs -ls /
Found 2 items
drwxrwxr-x   - testuser supergroup          0 2016-04-13 21:37 /tmp
drwxrwxr-x   - testuser supergroup          0 2016-04-13 21:38 /user

ubuntu15-laptop: ~ $>hadoop fs -ls /user
Found 1 items
drwxrwxr-x   - testuser supergroup          0 2016-04-13 21:38 /user/hive

ubuntu15-laptop: ~ $>hadoop fs -ls /user/hive
Found 1 items
drwxrwxr-x   - testuser supergroup          0 2016-04-13 21:38 /user/hive/warehouse

ubuntu15-laptop: ~ $>groups
testuser adm cdrom …
Run Code Online (Sandbox Code Playgroud)

hive derby metastore

5
推荐指数
1
解决办法
8809
查看次数

Hive,如何检索所有数据库的表列

我想在Hive中编写这个sql请求的等价物:

select * from information_schema.columns where table_schema='database_name'
Run Code Online (Sandbox Code Playgroud)

如何访问配置单元的Metastore并检索存储在特定数据库中的所有表的所有列?我知道我们可以通过describe [table_name]通过表来完成它,但是在同一个请求中是否有数据库中所有表的所有列?

java sql hadoop hive metastore

5
推荐指数
2
解决办法
1万
查看次数

如何在Hive-Site.xml文件中设置hive Metastore连接的配置?

我想使用java代码连接MetaStore.我不知道如何在Hive-Site.xml文件中设置配置设置以及我将发布Hive-Site.xml文件的位置.请帮忙.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.conf.HiveConf.ConfVars;

public class HiveMetastoreJDBCTest {

    public static void main(String[] args) throws Exception {

        Connection conn = null;
        try {
            HiveConf conf = new HiveConf();
            conf.addResource(new Path("file:///path/to/hive-site.xml"));
            Class.forName(conf.getVar(ConfVars.METASTORE_CONNECTION_DRIVER));
            conn = DriverManager.getConnection(
                    conf.getVar(ConfVars.METASTORECONNECTURLKEY),
                    conf.getVar(ConfVars.METASTORE_CONNECTION_USER_NAME),
                    conf.getVar(ConfVars.METASTOREPWD));

            Statement st = conn.createStatement();
            ResultSet rs = st.executeQuery(
                "select t.tbl_name, s.location from tbls t " +
                "join sds s on t.sd_id = s.sd_id");
            while (rs.next()) {
                System.out.println(rs.getString(1) + " : " + rs.getString(2)); …
Run Code Online (Sandbox Code Playgroud)

hadoop hive cloudera impala metastore

5
推荐指数
1
解决办法
2万
查看次数

EMR 集群中的外部配置单元元存储问题

我将我的 EMR 集群的配置单元元存储指向外部 MySQL RDS 实例。我创建了新的 hive 数据库“mydb”,并且在 hive.DBS 表中的外部 MySQL DB 中获得了条目。

hdfs://ip-10-239-1-118.ec2.internal:8020/user/hive/warehouse/mydb.db mydb hadoop USER

我还在 mydb 数据库下创建了新的 hive 表“mytable”。我在 hive.TBLS 中获得了外部 MySQL 数据库中的条目。到目前为止一切都很好..

我终止了我的集群..当我第二天回来时..我现在启动了新的集群,我做了以下操作,使用 MYDB;创建表 mytable_2(id int); 我得到以下错误,

执行错误,从 org.apache.hadoop.hive.ql.exec.DDLTask 返回代码 1。MetaException(message:Got exception: java.net.NoRouteToHostException No Route to Host from ip-10-239-1-4.ec2.internal/10.239.1.4 to ip-10-239-1-118.ec2.internal:8020套接字超时异常失败:java.net.NoRouteToHostException:没有到主机的路由;有关更多详细信息,请参见:http : //wiki.apache.org/hadoop/NoRouteToHost

注意:IP 10.239.1.4 是我当前集群的名称节点。IP 10.239.1.118 是我之前集群的名称节点

请让我知道需要覆盖哪些属性以避免此类错误?

hive emr metastore

4
推荐指数
1
解决办法
2325
查看次数

与MySQL的Hive连接:用户'hive'@'localhost'配置单元的访问被拒绝

我在CentOS上设置了Hive,并且我在同一台服务器上安装了hadoop,hive和MySQL.我还在mySQL和用户ID上设置了Metastore数据库 - hive可以访问数据库.

我有以下问题 - 错误消息如下.有人可以帮助解决这个问题吗?

显示数据库; FAILED:元数据错误:MetaException(消息:得到异常:org.apache.hadoop.hive.metastore.api.MetaException javax.jdo.JDODataStoreException:拒绝访问用户'hive'@'localhost'(使用密码:YES)NestedThrowables :java.sql.SQLException:访问被拒绝用户'hive'@'localhost'(使用密码:YES))FAILED:执行错误,从org.apache.hadoop.hive.ql.exec.DDLTask返回代码1

Hive-site.xml如下所示.

   <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://127.0.0.1/metastore?createDatabaseIfNotExist=true</value>
    </property>

    <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.jdbc.Driver</value>
      <description>Driver class name for a JDBC metastore</description>
    </property>

    <property>
     <name>javax.jdo.option.ConnectionUserName</name>
     <value>hive</value>
     </property>

     <property>
      <name>javax.jdo.option.ConnectionPassword</name>
     <value>password</value>
     </property>

     <property>
      <name>hive.hwi.war.file</name>
      <value>/usr/lib/hive/lib/hive-hwi-0.10.0-cdh4.2.0.jar</value>
      <description>This is the WAR file with the jsp content for Hive Web Interface     </description>
     </property>

     <property>
      <name>datanucleus.fixedDatastore</name>
      <value>true</value>
      </property>

      <property>
       <name>datanucleus.autoCreateTables</name>
       <value>true</value>
      </property>

      <property>
      <name>hive.metastore.uris</name>
        <value>thrift://127.0.0.1:9083</value>
        <description>IP address </description>
      </property>

       <property>
       <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive2/warehouse</value>
         <description> warehouse </description>
        </property>
Run Code Online (Sandbox Code Playgroud)

我可以使用配置单元和密码登录MySQL,并能够在Metastore数据库中创建表.不确定问题在哪里?有什么建议?

mysql hadoop hive cloudera metastore

3
推荐指数
1
解决办法
1万
查看次数

在BigQuery中有没有像'hive metastore'这样的元数据存储?

我是BigQuery的新手.我只是想知道,在BigQuery中我们是否有像hive metastore(关于所有表,列及其描述的元数据)的内容?

hive google-bigquery hcatalog metastore

3
推荐指数
1
解决办法
583
查看次数

将Hive 1.2 Metastore Service配置为S3存储而不是HDFS后无法启动

我在独立模式下有一个Apache Spark集群(2.2.0)。直到现在使用HDFS来运行镶木地板文件。我正在使用Apache Hive 1.2的Hive Metastore Service通过Thriftserver通过JDBC访问Spark。

现在,我想使用S3对象存储而不是HDFS。我在hive-site.xml中添加了以下配置:

<property>
  <name>fs.s3a.access.key</name>
  <value>access_key</value>
  <description>Profitbricks Access Key</description>
</property>
<property>
  <name>fs.s3a.secret.key</name>
  <value>secret_key</value>
  <description>Profitbricks Secret Key</description>
</property>
<property>
  <name>fs.s3a.endpoint</name>
  <value>s3-de-central.profitbricks.com</value>
  <description>ProfitBricks S3 Object Storage Endpoint</description>
</property>
<property>
  <name>fs.s3a.endpoint.http.port</name>
  <value>80</value>
  <description>ProfitBricks S3 Object Storage Endpoint HTTP Port</description>
</property>
<property>
  <name>fs.s3a.endpoint.https.port</name>
  <value>443</value>
  <description>ProfitBricks S3 Object Storage Endpoint HTTPS Port</description>
</property>
<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>s3a://dev.spark.my_bucket/parquet/</value>
  <description>Profitbricks S3 Object Storage Hive Warehouse Location</description>
</property>
Run Code Online (Sandbox Code Playgroud)

我在MySQL 5.7数据库中有配置单元metastore。我已将以下jar文件添加到Hive lib文件夹中:

  • aws-java-sdk-1.7.4.jar
  • hadoop-aws-2.7.3.jar

我已经在MySQL上删除了旧的配置单元metastore模式,然后使用以下命令启动了metastore服务:hive --service metastore &并且出现以下错误:

java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper
        at com.amazonaws.util.json.Jackson.<clinit>(Jackson.java:27)
        at com.amazonaws.internal.config.InternalConfig.loadfrom(InternalConfig.java:182) …
Run Code Online (Sandbox Code Playgroud)

mysql hive amazon-s3 metastore apache-spark

2
推荐指数
1
解决办法
1167
查看次数