使用Scala / Spark进行数据治理

时间:2018-07-23 06:29:15

标签: scala apache-spark apache-spark-sql

我有一个ETL可以分析大数据,我所有的表都是带有Spark 2.2.X的DataFrames。现在,我必须添加数据治理以了解数据的来源。例如:

表A

| Col1 | Col2 |  
| ---- | ---- |  
| test | hello |  
| test3 | bye |

表B

| Col1 | Col2 |  
| ---- | ---- |  
| test2 | hey |  
| test3 | bye |

现在我有两个表,我要做的是Col1Col2 + Col2的联接。结果表:

最终表

| Col1 | Col2 |  
| ---- | ---- |  
|test3 | byebye|  

我的问题是,Spark DataFrame中是否有任何函数,API或某些不使我改变代码太多的东西,我可以显示我拥有的DataFrame中的所有转换?

1 个答案:

答案 0 :(得分:1)

如果您需要快速解决方案,可以查看RDD#toDebugString。您可以在rdd上调用DataFrame方法,然后通过此方法显示其沿袭。

以下是Jacek Laskowski's book "Mastering Apache Spark"中的一个示例:

scala> val wordCount = sc.textFile("README.md").flatMap(_.split("\\s+")).map((_, 1)).reduceByKey(_ + _)
wordCount: org.apache.spark.rdd.RDD[(String, Int)] = ShuffledRDD[21] at reduceByKey at <console>:24

scala> wordCount.toDebugString
res13: String =
(2) ShuffledRDD[21] at reduceByKey at <console>:24 []
 +-(2) MapPartitionsRDD[20] at map at <console>:24 []
    |  MapPartitionsRDD[19] at flatMap at <console>:24 []
    |  README.md MapPartitionsRDD[18] at textFile at <console>:24 []
    |  README.md HadoopRDD[17] at textFile at <console>:24 []

此摘录以及有关RDD沿袭和toDebugString的详细说明可从here获得。