Как реализовать автоматическое приращение в spark SQL(PySpark)
Мне нужно реализовать столбец auto increment в моей таблице spark sql, как я могу это сделать. Будьте добры, проводите меня. я использую pyspark 2.0
Спасибо Кальян
1 ответ:
Я бы написал / повторно использовал stateful Hive udf и зарегистрировался в pySpark, поскольку Spark SQL имеет хорошую поддержку для Hive.
Проверьте эту строку
@UDFType(deterministic = false, stateful = true)
в приведенном ниже коде, чтобы убедиться, что она имеет статус UDF.package org.apache.hadoop.hive.contrib.udf; import org.apache.hadoop.hive.ql.exec.Description; import org.apache.hadoop.hive.ql.exec.UDF; import org.apache.hadoop.hive.ql.udf.UDFType; import org.apache.hadoop.io.LongWritable; /** * UDFRowSequence. */ @Description(name = "row_sequence", value = "_FUNC_() - Returns a generated row sequence number starting from 1") @UDFType(deterministic = false, stateful = true) public class UDFRowSequence extends UDF { private LongWritable result = new LongWritable(); public UDFRowSequence() { result.set(0); } public LongWritable evaluate() { result.set(result.get() + 1); return result; } } // End UDFRowSequence.java
Теперь постройте банку и добавьте местоположение, когда начнется pyspark get.
$ pyspark --jars your_jar_name.jar
Затем зарегистрируйтесь в
sqlContext
.sqlContext.sql("CREATE TEMPORARY FUNCTION row_seq AS 'org.apache.hadoop.hive.contrib.udf.UDFRowSequence'")
Теперь используйте
row_seq()
в запросе selectsqlContext.sql("SELECT row_seq(), col1, col2 FROM table_name")