Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 使用结构化流媒体将阵列扩展到spark中的列_Apache Spark_Dataframe_Apache Kafka_Streaming - Fatal编程技术网

Apache spark 使用结构化流媒体将阵列扩展到spark中的列

Apache spark 使用结构化流媒体将阵列扩展到spark中的列,apache-spark,dataframe,apache-kafka,streaming,Apache Spark,Dataframe,Apache Kafka,Streaming,我有一个问题: 我正在使用结构化流媒体从卡夫卡读取数据,数据是CSV行。当我从Kafka获取数据时,我有一个流数据帧,其中CSV行位于“value”内,它是一个字节序列 sDF2 = sDF.selectExpr("CAST(value as string)").select( split("value",",")) 使用这个,我有了一个新的数据框,其中“value”是一个字符串,它是CSV行 我如何获得一个新的数据框,在这里我已经解析了CSV字段并将其拆分为数据框列 例如: csv行为“a

我有一个问题:

我正在使用结构化流媒体从卡夫卡读取数据,数据是CSV行。当我从Kafka获取数据时,我有一个流数据帧,其中CSV行位于“value”内,它是一个字节序列

 sDF2 = sDF.selectExpr("CAST(value as string)").select( split("value",","))
使用这个,我有了一个新的数据框,其中“value”是一个字符串,它是CSV行

我如何获得一个新的数据框,在这里我已经解析了CSV字段并将其拆分为数据框列

例如: csv行为“abcd,123,frgh,1321”

我喜欢新的数据帧是

sDF3.col1 = abcd
sDF3.col2 = 123
sDF3.col3 = frgh ...etc
其中所有列都是字符串

我仍然可以做到这一点:

 sDF3 = sDF2.select( sDF2.csv[0].alias("EventId").cast("string"),
 sDF2.csv[1].alias("DOEntitlementId").cast("string"),               
 sDF2.csv[3].alias("AmazonSubscriptionId").cast("string"),
 sDF2.csv[4].alias("AmazonPlanId").cast("string"),
 ... etc ... 

但是它看起来很难看。

我还没有试过,但是像这样的东西应该行得通

sDF2 = 
      sDF.selectExpr("CAST(value as string)")
       .alias("csv").select("csv.*")
       .select("split(value,',')[0] as DOEntitlementId", 
               "split(value,',')[1] as AmazonSubscriptionId", 
               "split(value,',')[2] as AmazonPlanId")
sDF2 = 
      sDF.selectExpr("CAST(value as string)")
       .alias("csv").select("csv.*")
       .select("split(value,',')[0] as DOEntitlementId", 
               "split(value,',')[1] as AmazonSubscriptionId", 
               "split(value,',')[2] as AmazonPlanId")