嘿,伙计们,现在我正在尝试为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
我的格式正确吗?
2条答案
按热度按时间eh57zj3b1#
你正在制作一个标准的csv文件。由逗号分隔(或分隔)值组成的文件。
它看起来很好,但是您需要删除逗号周围的额外间距,除非您希望将它们保留在数据库表中。
然后,你还需要学习
LOAD DATA LOCAL INPATH
语法或使用EXTERNAL
路径上的表LOCATION
bxjv4tth2#
要理解Hive,你必须明白它到底做了什么。hive是hadoop生态系统中的一个组件,它围绕物理存储的数据(在大多数情况下是文件)创建元数据,以便能够查询这些数据。然后将这些元数据存储在关系数据库中。hive还提供了一个sql引擎。
当对配置单元数据进行查询时,应用程序将查找元数据(文件位于何处,它们有什么结构,等等)。执行相应的作业来检索数据。
因此,通过一个hivecreatetable命令,基本上可以定义这个元数据。
您可以定义以下因素:
结构(json、csv、自定义…)。
分布式文件系统(hdfs)中的位置
分区(子目录)
分隔符
格式(textformat,基于列的特殊格式)
压缩比
使用特定的hive create table命令,您可以告诉hive在metastore中创建一个关于csv文件的条目,这些文件用逗号分隔。由于您没有指定任何位置,因此它将位于默认位置下(如果您没有更改标准设置,则将是hdfs上的apps/hive/warehouse/employee)。您的样本将符合您定义的结构。