在hadoop上使用分隔符以正确的格式创建此文本文件

kx1ctssn  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(421)

嘿,伙计们,现在我正在尝试为hadoop上的配置单元创建一个输入文本文件,但是我被命令搞糊涂了,因为我只是一个初学者。
命令如下:

hive> create table employee(emp_id int,name string,salary double) row format delimited fields terminated by ',';

那么我的文本文件应该是什么,分隔符是什么意思?
这样可以吗?

1244, Daniel, 200000
1344, John,   59999
8742, Smith, 98009

我的格式正确吗?

eh57zj3b

eh57zj3b1#

你正在制作一个标准的csv文件。由逗号分隔(或分隔)值组成的文件。
它看起来很好,但是您需要删除逗号周围的额外间距,除非您希望将它们保留在数据库表中。
然后,你还需要学习 LOAD DATA LOCAL INPATH 语法或使用 EXTERNAL 路径上的表 LOCATION

bxjv4tth

bxjv4tth2#

要理解Hive,你必须明白它到底做了什么。hive是hadoop生态系统中的一个组件,它围绕物理存储的数据(在大多数情况下是文件)创建元数据,以便能够查询这些数据。然后将这些元数据存储在关系数据库中。hive还提供了一个sql引擎。
当对配置单元数据进行查询时,应用程序将查找元数据(文件位于何处,它们有什么结构,等等)。执行相应的作业来检索数据。
因此,通过一个hivecreatetable命令,基本上可以定义这个元数据。
您可以定义以下因素:
结构(json、csv、自定义…)。
分布式文件系统(hdfs)中的位置
分区(子目录)
分隔符
格式(textformat,基于列的特殊格式)
压缩比
使用特定的hive create table命令,您可以告诉hive在metastore中创建一个关于csv文件的条目,这些文件用逗号分隔。由于您没有指定任何位置,因此它将位于默认位置下(如果您没有更改标准设置,则将是hdfs上的apps/hive/warehouse/employee)。您的样本将符合您定义的结构。

相关问题