реализация сложных типов данных поверх объединенных данных - PullRequest
0 голосов
/ 08 июля 2019

Я объединил данные из двух таблиц и хочу преобразовать их в сложный тип данных (Map).

// creating data frame of product data file
val proDF = spark.read.format("parquet").load("path")

// creating data frame of Finance data file
val finDF = spark.read.format("parquet").load("path")

// joining both the data frames
val proFinJoinDF = proDF.joinWith(finDF, proDF("col1") === finDF("col1") && proDF("col2") === finDF("col2") && proDF("col3") === finDF("col3"))

// saving joined data into temporary table 
proFinJoinDF.registerTempTable("join_Data")

val new1 = spark.sql("""select 
_1.col1 as A,
_1.col2 as B,...
_2.col1 as P,
_2.col2 as Q,
_2.col3 as R... from join_data""" )

// to convert data type to "string" for Map
var strnew1 = new1.select(new1.columns.map(c => col(c).cast(StringType)) : _*)

// creating case class for Map type 
case class Pro_Fin(A: String, B: String, ProMap: Map[String, String], FinMap: Map[String, String])

Теперь я хочу преобразовать мои объединенные данные в вышеприведенный класс дел (Pro_Fin) и сохранить их в таблице.

Ожидаемый результат:

A   B   proMap<c:value, d:value …>  finMap<P:value, Q:value …>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...