从单个 csv 文件在 Hadoop Hive 中创建星型模式(维度和事实表)

Posted

技术标签:

【中文标题】从单个 csv 文件在 Hadoop Hive 中创建星型模式(维度和事实表)【英文标题】:Creating Star Schema (Dimensions and Fact Table) in Hadoop Hive from a single csv file 【发布时间】:2020-07-11 14:32:59 【问题描述】:

我对 Datawarehouse、OLAP 和 hive 完全陌生。我确实有一个 csv 文件,其中包含有关 ebay 等在线市场的训练数据(请参阅列数据)。我的任务是在 hive 中创建一个星型模式(通过 Data Analytics Studio、Spark 或其他)。

我将维度搭建如下:

如何创建这些维度表,尤其是为每一行生成一个新 ID? 我的SELECT New_Guid(), listing_title, listing_subtitle, listing_type_code, start_price, buy_it_now_price, buy_it_now_listed_flag, qty_available_per_listing From auctions,我在另一个教程中找到的。但是New_Guid() 在我的 Data Analytics Studio 中根本不起作用。

非常感谢!

【问题讨论】:

如何获取 UUID 或数字代理键:***.com/a/58625717/2700344 价格是否是维度属性值得商榷 所以。如果对您有帮助,请接受。 【参考方案1】:

假设维度中没有历史,不管维度设计是否良好,都不管:

    对于每个必需的维度:

    读取 csv 并提取应用于 temp_table 的相关字段 使用select (row_number() over()), Col1, Col2, col3, col4 from temp_table为每一行添加一个序列号并保留到维度表

    对于事实表:

    读取 csv 并提取应用于 temp_table 的相关字段 使用select (row_number() over()), Col1, Col2, col3, col4 from temp_table为每一行添加一个序列号并存储在另一个temp_table_2中 用适当的语句从 temp_table_2 加入到维度查找/选择给出 temp_table_3 的序列号 仅将 temp_table_3 中的键插入 fact_table 中

【讨论】:

以上是关于从单个 csv 文件在 Hadoop Hive 中创建星型模式(维度和事实表)的主要内容,如果未能解决你的问题,请参考以下文章

将多个 Hive 表合并为 Hadoop 中的单个表

hive导入到clickhouse的几种方式总结

hadoop hdfs csv导入hive表

hadoop hdfs csv导入hive表

如何从Oracle到hive

Hadoop综合大作业