Мне нужно реализовать столбец автоматического увеличения в моей таблице Spark SQL, как я могу это сделать. Пожалуйста, направь меня. я использую писпарк 2.0
Спасибо, Калян.
Мне нужно реализовать столбец автоматического увеличения в моей таблице Spark SQL, как я могу это сделать. Пожалуйста, направь меня. я использую писпарк 2.0
Спасибо, Калян.
Я бы написал/повторно использовал 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.
$ pyspark --jars your_jar_name.jar
Тогда зарегистрируйтесь в sqlContext
.
sqlContext.sql("CREATE TEMPORARY FUNCTION row_seq AS 'org.apache.hadoop.hive.contrib.udf.UDFRowSequence'")
Теперь используйте row_seq()
в запросе выбора
sqlContext.sql("SELECT row_seq(), col1, col2 FROM table_name")
Проект использования пользовательских функций Hive в pySpark
sqlContext.sql("Create table abc(id int, name string)")
и sqlContext.sql("INSERT into TABLE abc SELECT row_seq(), 'John'")
и sqlContext.sql("INSERT into TABLE abc SELECT row_seq(), 'Tim'")
. Когда я делаю оператор select *, я получаю как iD
, так и 1
вместо 1
и 2
.
- person ; 25.05.2017
stateful = true
внутри тега @UDFType
в своем коде?
- person mrsrinivas; 26.05.2017