impala分批读取数据:0518-如何在Impala中使用UDF获取SessionId
impala分批读取数据:0518-如何在Impala中使用UDF获取SessionIdCREATE FUNCTION getQueryId() RETURNS string location '/tmp/libgetQueryId.so' symbol='getQueryId'; 查询:此处我们将context->impl()->state()->session_id();改为context->impl()->state()->query_id();重新编译后上传创建getQueryId()。断开连接后再次连接查询: 可以看到,与上一次连接相比,SessionId已发生改变。3. 但是impala不同于hive,在cmz中impala的log不能看到impala的Sessionid 因此,不容易验证获取的正确性,但impala的log中有查询的query_id。
4.验证UDF1. 将libgetSessionId.so上传hdfs的/tmp下:
hdfs dfs -put libgetSessionId.so /tmp
2. 创建UDF并验证
CREATE FUNCTION getSessionId() RETURNS string location '/tmp/libgetSessionId.so' symbol='getSessionId';
查询
select * getSessionId() from test_table;
从上图中可以看出,在一次查询中获取的sessionId相同。
断开连接后再次连接查询:
可以看到,与上一次连接相比,SessionId已发生改变。
3. 但是impala不同于hive,在cmz中impala的log不能看到impala的Sessionid 因此,不容易验证获取的正确性,但impala的log中有查询的query_id。
此处我们将context->impl()->state()->session_id();改为context->impl()->state()->query_id();重新编译后上传创建getQueryId()。
CREATE FUNCTION getQueryId() RETURNS string location '/tmp/libgetQueryId.so' symbol='getQueryId';
查询:
select * getQueryId() from test_table;
可看到在两次的查询中query_id不同,符合预期,并且与log日志中的query_id相同: