小编Abh*_*waj的帖子

在Spark中将Dataframe转换为Map(键值)

所以,我在Spark中有一个DataFrame,如下所示:

它有30列:只显示其中的一些!

[ABCD,color,NORMAL,N,2015-02-20,1]
[XYZA,color,NORMAL,N,2015-05-04,1]
[GFFD,color,NORMAL,N,2015-07-03,1]
[NAAS,color,NORMAL,N,2015-08-26,1]
[LOWW,color,NORMAL,N,2015-09-26,1]
[KARA,color,NORMAL,N,2015-11-08,1]
[ALEQ,color,NORMAL,N,2015-12-04,1]
[VDDE,size,NORMAL,N,2015-12-23,1]
[QWER,color,NORMAL,N,2016-01-18,1]
[KDSS,color,NORMAL,Y,2015-08-29,1]
[KSDS,color,NORMAL,Y,2015-08-29,1]
[ADSS,color,NORMAL,Y,2015-08-29,1]
[BDSS,runn,NORMAL,Y,2015-08-29,1]
[EDSS,color,NORMAL,Y,2015-08-29,1]
Run Code Online (Sandbox Code Playgroud)

因此,我必须将此dataFrame转换为Scala中的键值对,使用该键作为Dataframe中的一些列,并为从索引0到计数(不同键数)的键分配唯一值.

例如:使用上面的情况,我希望在Scala中的map(键值)集合中有一个输出,如下所示:

    ([ABC_color_NORMAL_N_1->0]
    [XYZA_color_NORMAL_N_1->1]
    [GFFD_color_NORMAL_N_1->2]
    [NAAS_color_NORMAL_N_1->3]
    [LOWW_color_NORMAL_N_1->4]
    [KARA_color_NORMAL_N_1->5]
    [ALEQ_color_NORMAL_N_1->6]
    [VDDE_size_NORMAL_N_1->7]
    [QWER_color_NORMAL_N_1->8]
    [KDSS_color_NORMAL_Y_1->9]
    [KSDS_color_NORMAL_Y_1->10]
    [ADSS_color_NORMAL_Y_1->11]
    [BDSS_runn_NORMAL_Y_1->12]
    [EDSS_color_NORMAL_Y_1->13]
    )
Run Code Online (Sandbox Code Playgroud)

我是Scala和Spark的新手,我尝试过做这样的事情.

 var map: Map[String, Int] = Map()
    var i = 0
    dataframe.foreach( record =>{
    //Is there a better way of creating a key!
        val key = record(0) + record(1) + record(2) + record(3)
        var index = i
        map += (key -> index)
        i+=1
          }
        )
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用.:完成后,Map为null.

dictionary scala apache-spark

10
推荐指数
1
解决办法
3万
查看次数

将列表的RDD转换为Dataframe

我正在尝试将RDD列表转换为DataframeSpark中的列表.

RDD:

['ABC', 'AA', 'SSS', 'color-0-value', 'AAAAA_VVVV0-value_1', '1', 'WARNING', 'No test data for negative population! Re-using negative population for non-backtest.']
['ABC', 'SS', 'AA', 'color-0-SS', 'GG0-value_1', '1', 'Temp', 'After, date differences are outside tolerance (10 days) 95.1% of the time']
Run Code Online (Sandbox Code Playgroud)

这是RDD多个列表的内容.

如何将其转换为数据帧?目前,它正在将其转换为单列,但我需要多列.

Dataframe
+--------------+
|            _1|
+--------------+
|['ABC', 'AA...|
|['ABC', 'SS...|
Run Code Online (Sandbox Code Playgroud)

scala dataframe apache-spark rdd

0
推荐指数
1
解决办法
1124
查看次数

标签 统计

apache-spark ×2

scala ×2

dataframe ×1

dictionary ×1

rdd ×1