【问题标题】:Create a HIVE table and save it to a tab-separated file?创建一个 HIVE 表并将其保存到一个制表符分隔的文件中?
【发布时间】:2017-06-30 22:36:02
【问题描述】:

我在 hdfs 中有一些数据。
此数据是使用 Sqoop 从 PostgreSQL 数据库迁移而来的。
数据具有以下hadoopish格式,如_SUCCESSpart-m-00000等。
我需要根据这些数据创建一个 Hive 表,然后我需要将此表导出到单个制表符分隔的文件中。

据我所知,我可以通过这种方式创建表格。

create external table table_name (
  id int,
  myfields string
)
location '/my/location/in/hdfs';

然后我可以将表格保存为tsv文件:

hive -e 'select * from some_table' > /home/myfile.tsv

我不知道如何将数据从 hdfs 加载到 Hive 表中。
此外,我应该使用create 手动定义表的结构,还是在自动创建所有列时有任何自动化方式?

【问题讨论】:

  • Hive 数据已经在 LOCATION 的 HDFS 中
  • 你用了什么sqoop命令?它具有为您创建 Hive 表的选项
  • @cricket_007:这是由另一个人完成的。所以,我无法改变这一点。
  • 好的,那你应该去和那些人谈谈,否则你必须手动编写你的CREATE EXTERNAL TABLE 查询......这是我看到的唯一选项。自动化的方式是第一种
  • 问题的标题非常具有误导性。

标签: hadoop hive hdfs


【解决方案1】:

我不知道如何将数据从 hdfs 加载到 Hive 表中

您在 hdfs 目录上创建表模式,就像您正在做的那样。

我应该使用 create 手动定义表的结构,还是在自动创建所有列时有任何自动化方式?

除非您没有tell sqoop to create the table,否则您必须手动操作。

将此表导出到单个制表符分隔的文件中。

查询可能会起作用,或者除非 sqoop 将分隔符设置为 \t,否则您需要从第一个指定此类列分隔符的表开始创建另一个表。然后,你甚至不需要查询表,只需在目录上运行hdfs dfs -getMerge

【讨论】:

    猜你喜欢
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    相关资源
    最近更新 更多