当前位置: 首页 > 知识库问答 >
问题:

spark数据集的变换

魏鸿
2023-03-14

我在RDBMS中有几个数据库表,在当前的逻辑中,所有这些表都被连接起来并给出一些数据,基本上SQL被存储为视图的一部分。使用sqoop将数据推送到HDFS中,需要应用一些分组和按操作排序。

什么可能是连接数据集的最佳方式,如转储所需的列到内存(如df.registeredTempTable())和应用连接,或者我可以使用数据集连接,因为数据在HDFS的不同文件中可用。

问候阿南

共有1个答案

伯洋
2023-03-14

我建议再往前走一点。我不会选择在数据集之间进行连接。

我将采用下一种方法:

  1. Sqoop处理过程中涉及的所有表

让我们来看看你提到的例子:

1.Sqoop数据:您已经介绍了这个步骤。

2.创建Avro文档

虚拟数据

Departament
id, name
1 Sales
2 Technology

Employers
id, department_id, name
1 1 John
2 1 Bruno
3 2 Alicia
4 2 George

文档的结构取决于您将如何使用数据,可以有两个选项:

{"name": "John", "department": "Sales"}
{"name": "Bruno", "department": "Sales"}
{"name": "Alicia", "department": "Technology"}
{"name": "George", "department": "Technology"}
{"name": "Sales", "Employers": ["John", "Bruno"]}
{"name": "Technology", "Employers": ["Alicia", "George"]}

这样查询就容易多了。

采用这种方法的好处是,当关系数据库模型包含太多表时,查询会变得更加复杂,而且,当表的大小过大时,在运行时连接数据会花费大量时间,这是因为希望在ETL管道期间而不是在运行时对数据进行转换。

希望这澄清了方法。

 类似资料:
  • 问题内容: 当我仔细观察时,我唯一提出的疑问是: 找不到适用于实际参数“ org.apache.spark.unsafe.types.UTF8String”的适用构造函数/方法;候选者为:“ public void sparkSQL.Tweet.setId(long)” 问题答案: 正如@ user9718686所写,id字段具有不同的类型:在json文件和类定义中。当您将其读入时,Spark会从

  • 我正在评估将现有的RDD代码替换为Dataset。对于我的一个用例,我无法将数据集映射到另一个用例类。 以下是我想做的。。。 任何帮助都将不胜感激。 但以下例外情况:

  • null null 为什么要使用UDF/UADF而不是map(假设map保留在数据集表示中)?

  • 我正在尝试使用Spark数据集API,但在进行简单连接时遇到了一些问题。 假设我有两个带有字段的数据集:,那么在的情况下,我的连接如下所示: 但是,对于数据集,有一个。joinWith方法,但相同的方法不起作用:

  • 我是spark的新手,正在尝试使用java将avro数据加载到spark“dataset”(spark 1.6)。我在scala中看到了一些示例,但在java中没有看到。任何指向java示例的指针都会很有帮助。我试图创建一个javaRDD,然后将其转换为“dataset”。我相信一定有一条直截了当的路。

  • 在spark数据集中获取此空错误。滤器 输入CSV: 工作代码: 失败代码(添加以下行返回错误): 返回空错误