우리는 자동 증가 값을 하이브 상태 UDF을 사용할 수 있습니다 : 이것은 내 자바 POJO 클래스입니다. 코드는 이렇게 될 것입니다.
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
이 비슷한 질문이 여기에 대답 (How to implement auto increment in spark SQL)
나는 이런 식으로 뭔가를 필요로하지만 문제는 있었다 , 그럴거야? 200 만 달러의 데이터를 제공합니다. 실제로 나는 파일이 들어있는 정확한 10K 행의 작은 파일에서 200 백만 개의 행을 포함하는 큰 파일을 나누고 싶습니다. 각 행에 대해 자동 증가 숫자를 추가하고이 (ID> 10,001 및 ID <20,000)과 같은 도움으로 일괄 적으로 읽는 것으로 생각했습니다. 이 규모에서이 작업이 가능합니까? 제안하십시오. –