{"id":6050,"date":"2021-06-17T09:17:24","date_gmt":"2021-06-17T01:17:24","guid":{"rendered":"https:\/\/nj.transwarp.cn:8180\/?p=6050"},"modified":"2024-10-24T13:33:26","modified_gmt":"2024-10-24T05:33:26","slug":"python-udf%e5%ae%9e%e7%8e%b0","status":"publish","type":"post","link":"https:\/\/kbwp.transwarp.cn\/?p=6050","title":{"rendered":"inceptor python udf\u5b9e\u73b0"},"content":{"rendered":"<h3>\u6982\u8981\u63cf\u8ff0<\/h3>\n<hr \/>\n<p>\u672c\u6587\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528 python \u5b9e\u73b0 inceptor udf \u51fd\u6570\uff0c\u4ec5\u4f9b\u53c2\u8003\u3002<\/p>\n<h3>\u8be6\u7ec6\u8bf4\u660e<\/h3>\n<hr \/>\n<h4>1. \u7f16\u5199python\u811a\u672c<\/h4>\n<blockquote>\n<p>\u529f\u80fd\u662f\u5b9e\u73b0\u4f7f\u7528\u7a7a\u683c\u505a\u5b57\u7b26\u4e32\u62c6\u5206<\/p>\n<\/blockquote>\n<pre><code class=\"language-python\">#!\/usr\/bin\/python\nimport sys\nfor line in sys.stdin:\n    line = line.strip()\n    fname , lname = line.split(' ')\n    l_name = lname.lower()\n    print '\\t'.join([fname, str(l_name)])<\/code><\/pre>\n<h4>2. \u5c06.py\u6587\u4ef6\u4e0a\u4f20\u5230\u5bb9\u5668\u7684\/usr\/lib\/inceptor\/lib\u76ee\u5f55\uff0c\u505a<a href=\"https:\/\/nj.transwarp.cn:8180\/?p=2568\" title=\"\u955c\u50cf\u6301\u4e45\u5316\">\u955c\u50cf\u6301\u4e45\u5316<\/a><\/h4>\n<h4>3. \u6784\u5efa\u6d4b\u8bd5\u8868\u53ca\u6d4b\u8bd5\u6570\u636e<\/h4>\n<pre><code class=\"language-sql\">CREATE TABLE test01(id varchar2(255) ) CLUSTERED by(id) INTO 1 BUCKETS STORED AS ORC_TRANSACTION;\n\nINSERT INTO test01 VALUES('liu kaiwen');\nINSERT INTO test01 VALUES('zhang sanfeng');<\/code><\/pre>\n<h4>4. \u6267\u884ctransform\u8bed\u53e5<\/h4>\n<pre><code class=\"language-sql\">SELECT transform(id) USING 'python \/usr\/lib\/inceptor\/lib\/split.py' AS thing1, thing2 FROM test01;<\/code><\/pre>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2021\/06\/image-1623892415759.png\" alt=\"file\" \/><\/p>\n<h4>FAQ\uff1a\u5f00\u542fkerberos\u60c5\u51b5\u4e0b\u62a5\u9519\u95ee\u9898<\/h4>\n<blockquote>\n<p>\u5f00\u542fkerberos\u60c5\u51b5\u4e0b\u4f1a\u62a5\u5982\u4e0b\u9519\u8bef\uff1a<\/p>\n<\/blockquote>\n<p><font color=red>SQL \u9519\u8bef [12] [08S01]: FAILED: Hive Internal Error: org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAccessControlException(Query with transform clause is disallowed in current configuration. )<\/font><\/p>\n<p>\u8be5\u95ee\u9898\uff0c\u662f\u56e0\u4e3atransform\u662fhive\u7684\u4e00\u4e2a\u5b89\u5168\u6f0f\u6d1e\uff0c\u53c2\u8003\uff1a <a href=\"https:\/\/issues.apache.org\/jira\/browse\/RANGER-738\">https:\/\/issues.apache.org\/jira\/browse\/RANGER-738<\/a><\/p>\n<p><code>The TRANSFORM statement in Hive is a big security hole with Hive run without impersonation, so when SQL Standard Authorization is enabled, the feature id completely disabled which is a bit of a sledgehammer approach to securing this statement.<\/code><\/p>\n<p>argodb 6.0 \u53ca\u4ee5\u4e0a\u7248\u672c\uff0c\u53ef\u4ee5\u901a\u8fc7\u53c2\u6570 set quark.python.transform.enabled=true \u89e3\u51b3\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6982\u8981\u63cf\u8ff0 \u672c\u6587\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528 python \u5b9e\u73b0 inceptor udf \u51fd\u6570\uff0c\u4ec5\u4f9b\u53c2\u8003\u3002 \u8be6\u7ec6\u8bf4\u660e 1. \u7f16 ..<\/p>\n<div class=\"clear-fix\"><\/div>\n<p><a href=\"https:\/\/kbwp.transwarp.cn\/?p=6050\" title=\"read more...\">Read more<\/a><\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[38],"tags":[],"class_list":["post-6050","post","type-post","status-publish","format-standard","hentry","category-configuration"],"acf":[],"_links":{"self":[{"href":"https:\/\/kbwp.transwarp.cn\/index.php?rest_route=\/wp\/v2\/posts\/6050","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kbwp.transwarp.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kbwp.transwarp.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kbwp.transwarp.cn\/index.php?rest_route=\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/kbwp.transwarp.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6050"}],"version-history":[{"count":3,"href":"https:\/\/kbwp.transwarp.cn\/index.php?rest_route=\/wp\/v2\/posts\/6050\/revisions"}],"predecessor-version":[{"id":14554,"href":"https:\/\/kbwp.transwarp.cn\/index.php?rest_route=\/wp\/v2\/posts\/6050\/revisions\/14554"}],"wp:attachment":[{"href":"https:\/\/kbwp.transwarp.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6050"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kbwp.transwarp.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6050"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kbwp.transwarp.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6050"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}