我是hadoop新手。我有50列的tsv格式的数据,我需要将数据存储到配置单元中。如何在不使用CREATETABLE语句手动创建表的情况下动态创建数据并将其加载到表中?
fquxozlt1#
可以使用色调:http://gethue.com/hadoop-tutorial-create-hive-tables-with-headers-and/或者使用spark可以推断csv文件的模式,并将其保存为配置单元表。
val df=spark.read .option("delimiter", "\t") .option("header",true) .option("inferSchema", "true") // <-- HERE .csv("/home/cloudera/Book1.csv")
fquxozlt2#
配置单元要求您运行CREATETABLE语句,因为配置单元元存储必须更新为您稍后要查询的数据位置的描述。读取模式并不意味着您可以在事先不知道元数据(如存储位置和存储格式)的情况下查询每个可能的文件。另一方面,sparksql或apachedrill允许您从文件中推断模式,但如果您不希望所有内容都是字符串列(或强制为意外类型),则必须再次为tsv定义列类型。这两种工具都可以与配置单元元存储交互,以实现模式信息的“解耦”存储
2条答案
按热度按时间fquxozlt1#
可以使用色调:
http://gethue.com/hadoop-tutorial-create-hive-tables-with-headers-and/
或者使用spark可以推断csv文件的模式,并将其保存为配置单元表。
fquxozlt2#
配置单元要求您运行CREATETABLE语句,因为配置单元元存储必须更新为您稍后要查询的数据位置的描述。
读取模式并不意味着您可以在事先不知道元数据(如存储位置和存储格式)的情况下查询每个可能的文件。
另一方面,sparksql或apachedrill允许您从文件中推断模式,但如果您不希望所有内容都是字符串列(或强制为意外类型),则必须再次为tsv定义列类型。这两种工具都可以与配置单元元存储交互,以实现模式信息的“解耦”存储