通过 Hue 在 hadoop 中加载大型 csv 只会存储 64MB 块
Posted
技术标签:
【中文标题】通过 Hue 在 hadoop 中加载大型 csv 只会存储 64MB 块【英文标题】:Load large csv in hadoop via Hue would only store a 64MB block 【发布时间】:2014-10-16 21:46:58 【问题描述】:我正在使用 Cloudera 快速入门 vm 5.1.0-1
我试图通过 Hue 将我的 3GB csv 加载到 Hadoop 中,到目前为止我尝试的是: - 将 csv 加载到 HDFS 中,特别是加载到位于 /user/hive/datasets 的名为 datasets 的文件夹中 - 使用 Metastore Manager 将其加载到默认数据库中
一切正常,这意味着我设法用正确的列加载它。主要问题是,当我使用 Impala 查询表时,会启动以下查询:
显示表统计信息 new_table
我意识到大小只有 64 MB,而不是 csv 的实际大小应该是 3GB。
此外,如果我通过 Impala 进行计数(*),则行数仅为 70000,而实际为 700 万。
任何帮助将不胜感激。
提前致谢。
【问题讨论】:
在加载之前,CSV文件是否已经被截断? 不。到目前为止,我找到了一种解决方法,通过 Impala 创建表并从那里加载它,但在这种情况下,我必须指定 create table 语句,包括我拥有的所有 140 列。像创建表(A字符串,B int等)。管理起来很痛苦,因此我一直在寻找更自动化的解决方案。 【参考方案1】:我也遇到了同样的问题。这是 Hue 如何通过具有 64MB 限制的 Web 界面导入文件的问题。
我一直在使用 Hive CLI 和 -f 标志对带有 DDL 代码的文本文件导入大型数据集。
例子:
hive -f beer_data_loader.hql
beer_data_loader.hql:
CREATE DATABASE IF NOT EXISTS beer
COMMENT "Beer Advocate Database";
CREATE TABLE IF NOT EXISTS beer.beeradvocate_raw(
beer_name STRING,
beer_ID BIGINT,
beer_brewerID INT,
beer_ABV FLOAT,
beer_style STRING,
review_appearance FLOAT,
review_aroma FLOAT,
review_palate FLOAT,
review_taste FLOAT,
review_overall FLOAT,
review_time BIGINT,
review_profileName STRING,
review_text STRING
)
COMMENT "Beer Advocate Data Raw"
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
STORED AS parquet;
CREATE EXTERNAL TABLE IF NOT EXISTS beer.beeradvocate_temp(
beer_name STRING,
beer_ID BIGINT,
beer_brewerID INT,
beer_ABV FLOAT,
beer_style STRING,
review_appearance FLOAT,
review_aroma FLOAT,
review_palate FLOAT,
review_taste FLOAT,
review_overall FLOAT,
review_time BIGINT,
review_profileName STRING,
review_text STRING
)
COMMENT "Beer Advocate External Loading Table"
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
LOCATION '/user/name/beeradvocate.data';
INSERT OVERWRITE TABLE beer.beeradvocate_raw SELECT * FROM beer.beeradvocate_temp;
DROP TABLE beer.beeradvocate_temp;
【讨论】:
文件是用这样的命令永久存储在HDFS中的吗?【参考方案2】:似乎是 Hue 中的一个错误。找到了解决方法。如果您在创建表时选中“从文件导入数据”复选框,则文件将被截断。保持未选中以创建一个空表。然后在 Metastore Manager 中选择新创建的表,并使用 Actions 菜单中的“Import Data”选项来填充它。这应该填充所有行。
【讨论】:
【参考方案3】:此错误 (HUE-2501) 是在导入标头大于 64MB 的文件时发生的。
Peter 的解决方法很好,它已在 Hue 3.8 和 CDH5.3.2 中修复。
【讨论】:
将 CDH 5.12 与 HIVE 4 一起使用,问题显然仍然存在以上是关于通过 Hue 在 hadoop 中加载大型 csv 只会存储 64MB 块的主要内容,如果未能解决你的问题,请参考以下文章
使用 sparklyr 时无法在本地 Spark 连接中加载 .csv 数据