【问题标题】:Unable to recover partitions in Shark for Hive table with S3 location无法使用 S3 位置恢复 Shark for Hive 表中的分区
【发布时间】:2014-02-15 22:48:54
【问题描述】:

我正在尝试在 EMR 上使用 Shark,但我似乎无法从位置设置为 S3 存储桶的表中恢复我的分区。当我尝试显示我的分区时,我什么也得不到。

shark> MSCK REPAIR TABLE logs ;
OK
Time taken: 1.79 seconds
shark> SHOW PARTITIONS logs ;
OK
Time taken: 0.073 seconds

我像这样创建我的表

SET hive.exec.dynamic.partition = true ;
SET hive.exec.dynamic.partition.mode = nonstrict ;

CREATE EXTERNAL TABLE IF NOT EXISTS logs (
  time STRING,
  thread STRING,
  logger STRING,
  identity STRING,
  message STRING,
  logtype STRING,
  logsubtype STRING,
  node STRING,
  storageallocationstatus STRING,
  nodelist STRING,
  userid STRING,
  nodeid STRING,
  path STRING,
  datablockid STRING,
  hash STRING,
  size STRING,
  value STRING,
  exception STRING,
  server STRING,
  app STRING,
  version STRING
)
PARTITIONED BY (
  dt STRING,
  level STRING
)
ROW FORMAT
  DELIMITED
  FIELDS TERMINATED BY '\t'
  LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION 's3://my-log/parsed-logs/' ;

我的日志存储桶包含一个位于s3://my-log/parsed-logs/dt=2014-01-03/level=ERROR/ 的日志文件。

根据the Hive language manualMSCK REPAIR TABLE logs 命令应该等同于 Amazon 的 Hive 扩展 ALTER TABLE logs RECOVER PARTITIONS,但是当我运行该命令时,我看不到任何分区。我在 Hive 中使用 ALTER TABLE logs RECOVER PARTITIONS 尝试了完全相同的操作,效果非常好。

hive> ALTER TABLE logs RECOVER PARTITIONS ;
OK
Time taken: 0.975 seconds
hive> SHOW PARTITIONS logs ;
OK
dt=2014-01-03/level=ERROR
Time taken: 0.078 seconds, Fetched: 1 row(s)

我在使用 Shark 时是否遗漏了什么?

【问题讨论】:

    标签: hadoop amazon-s3 hive amazon-emr shark-sql


    【解决方案1】:

    我与 AWS 交谈过,他们说我目前唯一的选择是坚持使用 Hive,因为 MSCK REPAIR TABLE 在处理位于 S3 中的表时会出现一些问题(这就是他们添加 ALTER TABLE RECOVER PARTITION 命令的原因) .

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      • 2019-01-26
      • 1970-01-01
      • 2019-08-28
      • 1970-01-01
      相关资源
      最近更新 更多