0
我有一個地圖,其值來自數據庫中的多個不同列。這些值之間具有下劃線。例如,如何在Scala中分割地圖中的值?
newMap("A", 23_null_12_09asfA)
這裏,23來自列A,而來自列B等,等等。現在,考慮一個有20個值的地圖。我想知道如何將這些值拆分爲數組或如何拆分和存儲它們?
我有一個地圖,其值來自數據庫中的多個不同列。這些值之間具有下劃線。例如,如何在Scala中分割地圖中的值?
newMap("A", 23_null_12_09asfA)
這裏,23來自列A,而來自列B等,等等。現在,考慮一個有20個值的地圖。我想知道如何將這些值拆分爲數組或如何拆分和存儲它們?
val baseRDD=sc.parallelize(List(("john","1_abc_2"),("jack","3_xyz_4")))
val sRDD = baseRDD.map(x=> x._2.split("_"))
val resultDF=sRDD.toDF
resultDF.show
| [1,abc,2] |
| [3,xyz,4] |
據我從你的問題,解釋明白,下面就可以是你的解決方案
val newMap: HashMap[String, String] = HashMap(("A", "23_null_12_09asfA"),
("B", "24_null_13_09asfB"),
("C", "25_null_14_09asfC"),
("D", "25_null_14_09asfC"),
("E", "25_null_14_09asfC"),
("F", "25_null_14_09asfC"),
("G", "25_null_14_09asfC"))
val schema = StructType(Array(StructField("col1", StringType, true),
StructField("col2", StringType, true),
StructField("col3", StringType, true),
StructField("col2", StringType, true)))
val rdd = sparkContext.parallelize(newMap.map(hashmap => Row.fromSeq(hashmap._2.split("_"))).toSeq)
sqlContext.createDataFrame(rdd, schema).show
我希望這是有幫助的
「分裂一下子,把它放在一個數據幀」 - 你什麼意思?你能展示一個期望輸出的例子嗎?如果整個集合只有20條記錄,那麼使用DataFrames的目的是什麼?DataFrame有助於分佈式地處理大集合,並且只會爲小集合創造不必要的開銷。 –
整個集合有超過50,000條記錄,但是我以20爲例。 –
我會更加清楚。我有這樣的值23_null_23dA。我想分割這些值,將它們存儲起來,並想用原始值執行檢查。 –