Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.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
Python n使用单调增量ID()_Python_Apache Spark_Bigdata_Pyspark_Rdd - Fatal编程技术网

Python n使用单调增量ID()

Python n使用单调增量ID(),python,apache-spark,bigdata,pyspark,rdd,Python,Apache Spark,Bigdata,Pyspark,Rdd,但请注意,这些值并不是特别“整洁”。每个分区都有一个值范围,并且输出不是连续的。例如,0、1、2、8589934592、8589934593、8589934594 这是2015年4月28日在Spark中添加的:您当然可以添加一个用于索引的数组,一个您选择的数组: 在Scala中,首先我们需要创建一个索引数组: val index_array=(1 to df.count.toInt).toArray index_array: Array[Int] = Array(1, 2, 3, 4, 5,

但请注意,这些值并不是特别“整洁”。每个分区都有一个值范围,并且输出不是连续的。例如,
0、1、2、8589934592、8589934593、8589934594


这是2015年4月28日在Spark中添加的:

您当然可以添加一个用于索引的数组,一个您选择的数组: 在Scala中,首先我们需要创建一个索引数组:

val index_array=(1 to df.count.toInt).toArray

index_array: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
现在可以将此列附加到DF。首先,您需要打开我们的DF并将其作为一个数组,然后使用您的index_数组压缩它,然后我们将新数组转换回和RDD。最后一步是将其作为DF:

final_df = sc.parallelize((df.collect.map(
    x=>(x(0),x(1))) zip index_array).map(
    x=>(x._1._1.toString,x._1._2.toString,x._2))).
    toDF("column_name")

之后索引将更加清晰。

您当然可以添加一个用于索引的数组,一个您选择的数组: 在Scala中,首先我们需要创建一个索引数组:

val index_array=(1 to df.count.toInt).toArray

index_array: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
现在可以将此列附加到DF。首先,您需要打开我们的DF并将其作为一个数组,然后使用您的index_数组压缩它,然后我们将新数组转换回和RDD。最后一步是将其作为DF:

final_df = sc.parallelize((df.collect.map(
    x=>(x(0),x(1))) zip index_array).map(
    x=>(x._1._1.toString,x._1._2.toString,x._2))).
    toDF("column_name")

之后索引将更加清晰。

单调增量ID()-这将按递增顺序分配行号,但不按顺序分配行号

带有2列的示例输出:

|---------------------|------------------|
|罗文号|品目2|
|---------------------|------------------|
|1 | xy|
|---------------------|------------------|
|12 | xz|
|---------------------|------------------|

如果您想分配行号,请使用以下技巧

在spark-2.0.1及更高版本中测试

df.createOrReplaceTempView(“df”)
dfRowId=spark.sql(“从df中选择*,以0划分的行数()作为行号”)

带有2列的示例输出:


|---------------------|------------------|
|罗文号|品目2|
|---------------------|------------------|
|1 | xy|
|---------------------|------------------|
|2 | xz|
|---------------------|------------------|


希望这有帮助。

单调递增ID()-这将按递增顺序而不是顺序分配行号

带有2列的示例输出:

|---------------------|------------------|
|罗文号|品目2|
|---------------------|------------------|
|1 | xy|
|---------------------|------------------|
|12 | xz|
|---------------------|------------------|

如果您想分配行号,请使用以下技巧

在spark-2.0.1及更高版本中测试

df.createOrReplaceTempView(“df”)
dfRowId=spark.sql(“从df中选择*,以0划分的行数()作为行号”)

带有2列的示例输出:


|---------------------|------------------|
|罗文号|品目2|
|---------------------|------------------|
|1 | xy|
|---------------------|------------------|
|2 | xz|
|---------------------|------------------|

希望这有帮助。

选择Pyspark数据帧的单行n,尝试:

df.where(df.id == n).show()
给定Pyspark数据帧:

df = spark.createDataFrame([(1, 143.5, 5.6, 28, 'M', 100000),\
                          (2, 167.2, 5.4, 45, 'M', None),\
                          (3, None , 5.2, None, None, None),\
                          ], ['id', 'weight', 'height', 'age', 'gender', 'income'])
选择第三行,尝试:

df.where('id == 3').show()
或:

选择具有行ID的多行(本例中为第2行和第3行),请尝试:

选择Pyspark数据帧的单行n,尝试:

df.where(df.id == n).show()
给定Pyspark数据帧:

df = spark.createDataFrame([(1, 143.5, 5.6, 28, 'M', 100000),\
                          (2, 167.2, 5.4, 45, 'M', None),\
                          (3, None , 5.2, None, None, None),\
                          ], ['id', 'weight', 'height', 'age', 'gender', 'income'])
选择第三行,尝试:

df.where('id == 3').show()
或:

选择具有行ID的多行(本例中为第2行和第3行),请尝试:

如果您只需要增量值(如ID)并且没有 限制数字必须是连续的,您可以使用 单调地增加id()。使用此功能时的唯一保证 函数的作用是每行的值都会增加, 每次执行时,值本身可能不同

如果您只需要增量值(如ID)并且没有 限制数字必须是连续的,您可以使用 单调地增加id()。使用此功能时的唯一保证 函数的作用是每行的值都会增加, 每次执行时,值本身可能不同


你好@zero323,我试过这个片段。除了索引的
之外,所有东西都可以工作。其中(列(“索引”).inSet(索引))
不起作用。它返回
TypeError:“Column”对象对我来说是不可调用的
。如果我想查询多个索引,你对代码段有更新吗?Hello@zero323,我尝试了这个代码段。除了索引的
之外,所有东西都可以工作。其中(列(“索引”).inSet(索引))
不起作用。它返回
TypeError:“Column”对象对我来说是不可调用的
。如果我要查询多个索引,您是否对代码段有更新?此答案被否决,因为它没有解释如何创建id列。此答案被否决,因为它没有解释如何创建id列。
df.where(df.id == 3).show()
id = {"2", "3"}
df.where(df.id.isin(id)).show()
from pyspark.sql.functions import monotonically_increasing_id
df.withColumn("Atr4", monotonically_increasing_id())