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())