快捷搜索:  汽车  科技

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.验证UDF

1. 将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;

impala分批读取数据:0518-如何在Impala中使用UDF获取SessionId(1)

从上图中可以看出,在一次查询中获取的sessionId相同。

断开连接后再次连接查询:

impala分批读取数据:0518-如何在Impala中使用UDF获取SessionId(2)

可以看到,与上一次连接相比,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;

impala分批读取数据:0518-如何在Impala中使用UDF获取SessionId(3)

可看到在两次的查询中query_id不同,符合预期,并且与log日志中的query_id相同:

impala分批读取数据:0518-如何在Impala中使用UDF获取SessionId(4)

impala分批读取数据:0518-如何在Impala中使用UDF获取SessionId(5)

猜您喜欢: