Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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 splitspark数据帧列_Apache Spark_Dataframe_Pyspark_Rdd - Fatal编程技术网

Apache spark splitspark数据帧列

Apache spark splitspark数据帧列,apache-spark,dataframe,pyspark,rdd,Apache Spark,Dataframe,Pyspark,Rdd,我用的是spark 2.3 我有这样一个数据帧(在其他情况下,c0可能包含20个内部字段): 我想拆分_c0,并创建新的数据帧,如下所示: col1 |col2 |col3 |col4 ----------------------------- 1.1 |1.2 |4.55 | a 4.44 |3.1 |9.99 | b 1.2 |99.88 |10.1 | x 我知道如何使用getItem()解决此问题: 但我希望找到一种不同的方法来解决这个问题,因为c0可能包含3个以上的内部

我用的是spark 2.3

我有这样一个数据帧(在其他情况下,c0可能包含20个内部字段):

我想拆分_c0,并创建新的数据帧,如下所示:

col1 |col2  |col3 |col4
-----------------------------
1.1  |1.2   |4.55 | a
4.44 |3.1   |9.99 | b
1.2  |99.88 |10.1 | x
我知道如何使用getItem()解决此问题:

但我希望找到一种不同的方法来解决这个问题,因为c0可能包含3个以上的内部列

有没有办法使用flatMap生成df

有没有办法将df[1]作为df[0]的内部字段插入

有没有办法使用df[0].getItem()来返回所有内部字段

有没有更简单的方法来生成数据帧

任何帮助都将不胜感激


感谢您使用df
split
函数和regex模式作为空白(
“\\s+”
)。 文件:


然后你可以使用数组列上的
getItem
来获得特定的字段值。

请分享你的DataFramework的结构可能是pault的副本,我希望找到一种不使用getItem()的简单方法,因为我有许多内部字段
col1 |col2  |col3 |col4
-----------------------------
1.1  |1.2   |4.55 | a
4.44 |3.1   |9.99 | b
1.2  |99.88 |10.1 | x
df = originalDf.rdd.map(lambda x: (re.split(" +",x[0]),x[1])).toDF()
# now, df[0] is a array of string , and df[1] is string
df = df.select(df[0].getItem(0), df[0].getItem(1), df[0].getItem(2), df[1])
def split(str, pattern):
    """
    Splits str around pattern (pattern is a regular expression).

    .. note:: pattern is a string represent the regular expression.

    >>> df = spark.createDataFrame([('ab12cd',)], ['s',])
    >>> df.select(split(df.s, '[0-9]+').alias('s')).collect()
    [Row(s=[u'ab', u'cd'])]
    """
    sc = SparkContext._active_spark_context
    return Column(sc._jvm.functions.split(_to_java_column(str), pattern))