我正在使用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( …
创建一个支持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-4703从from deserializer列注释中删除了这个信息.我如何检查给定表(Metastore或Avro架构)的列类型的来源是什么?
我正在尝试为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) 序言:我是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中编写这个sql请求的等价物:
select * from information_schema.columns where table_schema='database_name'
Run Code Online (Sandbox Code Playgroud)
如何访问配置单元的Metastore并检索存储在特定数据库中的所有表的所有列?我知道我们可以通过describe [table_name]通过表来完成它,但是在同一个请求中是否有数据库中所有表的所有列?
我想使用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) 我将我的 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 是我之前集群的名称节点
请让我知道需要覆盖哪些属性以避免此类错误?
我在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数据库中创建表.不确定问题在哪里?有什么建议?
我是BigQuery的新手.我只是想知道,在BigQuery中我们是否有像hive metastore(关于所有表,列及其描述的元数据)的内容?
我在独立模式下有一个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文件夹中:
我已经在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)