我试图从我的表中存档一些旧数据。使用spark.jars.packages org.vegas-viz:vegas_2.11:0.3.11,org.apache.spark:spark-streaming-kafka-0-10_2.11:2.1.0
查询。
ALTER TABLE TABLE_NAME ARCHIVE PARTITION(part_col)
表结构如下,
Hadoop version - 2.7.3
Hive version - 1.2.1
现在,我尝试存档特定分区的数据,如下所示,
hive> desc clicks_fact;
OK
time timestamp
user_id varchar(32)
advertiser_id int
buy_id int
ad_id int
creative_id int
creative_version smallint
creative_size varchar(10)
site_id int
page_id int
keyword varchar(48)
country_id varchar(10)
state varchar(10)
area_code int
browser_id smallint
browser_version varchar(10)
os_id int
zip varchar(10)
site_data varchar(20)
sv1 varchar(10)
day date
file_date varchar(8)
# Partition Information
# col_name data_type comment
day date
file_date varchar(8)
Time taken: 0.112 seconds, Fetched: 28 row(s)
我可以使用
直接在Hadoop中创建HARhive> ALTER TABLE clicks_fact ARCHIVE partition(day='2017-06-30', file_date='20170629');
intermediate.archived is hdfs://localhost:54310/user/hive/warehouse/scheme.db/clicks_fact/day=2017-06-30/file_date=20170629_INTERMEDIATE_ARCHIVED
intermediate.original is hdfs://localhost:54310/user/hive/warehouse/scheme.db/clicks_fact/day=2017-06-30/file_date=20170629_INTERMEDIATE_ORIGINAL
Creating data.har for hdfs://localhost:54310/user/hive/warehouse/scheme.db/clicks_fact/day=2017-06-30/file_date=20170629
in hdfs://localhost:54310/user/hive/warehouse/scheme.db/clicks_fact/day=2017-06-30/file_date=20170629/.hive-staging_hive_2017-10-12_22-03-17_129_6395228918576649008-1/-ext-10000/partlevel
Please wait... (this may take a while)
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org/apache/hadoop/tools/HadoopArchives
因此,它不是Hadoop中的依赖问题。
非常感谢任何帮助。
日志:
$ hadoop archive -archiveName archive.har -p /mydir_* /
答案 0 :(得分:1)
看起来依赖性就是问题。
我首先添加hadoop-tools.jar
作为依赖项(在hive_home/lib
内)。
这就是造成这个问题的原因。在我将hadoop-archives.jar
添加为依赖项而不是hadoop-tools.jar
后,它得到了解决。
感谢@Joby&的帮助。 @ Max08
答案 1 :(得分:0)
几点检查
set hive.archive.enabled=true;
set hive.metastore.schema.verification=true;
Hive现在将模式版本记录在Metastore数据库中,并验证Metastore模式版本是否与将要访问Metastore的Hive二进制文件兼容。请注意,默认情况下会禁用 隐式创建或更改现有架构的Hive属性 。 Hive不会尝试隐式更改Metastore架构。当您针对旧架构执行Hive查询时,它将无法访问Metastore。
答案 2 :(得分:0)
我使用hive --auxpath $HADOOP_HOME/share/hadoop/tools/lib/hadoop-archives-2.7.2.jar
,它可以正常工作。
配置单元使用--auxpath指定在创建新会话时将要加载的辅助jar。默认情况下,如果没有--auxpath,将不会加载此jar。