在 Spark SQL 临时 table 中创建自动增量字段
Create auto increment field in Spark SQL temporary table
我是 Spark 环境的新手。我在我的项目中使用 Spark SQL。我想在 Spark SQL 临时 table 中创建自动增量字段。我创建了 UDF,但它没有正常工作。我在互联网上尝试了各种示例。这是我的 Java POJO class:
public class AutoIcrementId {
int lastValue;
public int evaluate() {
lastValue++;
return lastValue;
}
}
我们可以使用 Hive 有状态 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
注册UDF:
CREATE TEMPORARY FUNCTION auto_increment_id AS
'org.apache.hadoop.hive.contrib.udf.UDFRowSequence'
用法:
SELECT auto_increment_id() as id, col1, col2 FROM table_name
这里回答了类似的问题 ()
我是 Spark 环境的新手。我在我的项目中使用 Spark SQL。我想在 Spark SQL 临时 table 中创建自动增量字段。我创建了 UDF,但它没有正常工作。我在互联网上尝试了各种示例。这是我的 Java POJO class:
public class AutoIcrementId {
int lastValue;
public int evaluate() {
lastValue++;
return lastValue;
}
}
我们可以使用 Hive 有状态 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
注册UDF:
CREATE TEMPORARY FUNCTION auto_increment_id AS
'org.apache.hadoop.hive.contrib.udf.UDFRowSequence'
用法:
SELECT auto_increment_id() as id, col1, col2 FROM table_name
这里回答了类似的问题 (