Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Databricks Runtime
Spark SQL mendukung integrasi Hive UDFs, UDAFs, dan UDTFs. Mirip dengan Spark UDF dan UDAF, Hive UDF bekerja pada satu baris sebagai input dan menghasilkan satu baris sebagai output, sementara Hive UDAF beroperasi pada beberapa baris dan mengembalikan satu baris agregat sebagai hasilnya. Selain itu, Hive juga mendukung UDTF (User Defined Tabular Functions) yang bertindak pada satu baris sebagai input dan mengembalikan beberapa baris sebagai output. Untuk menggunakan Hive UDF/UDAF/UTF, pengguna harus mendaftarkannya di Spark, lalu menggunakannya di kueri Spark SQL.
Contoh
Hive memiliki dua antarmuka UDF: UDF dan GenericUDF.
Contoh di bawah ini menggunakan GenericUDFAbs berasal dari GenericUDF.
-- Register `GenericUDFAbs` and use it in Spark SQL.
-- Note that, if you use your own programmed one, you need to add a JAR containing it
-- into a classpath,
-- e.g., ADD JAR yourHiveUDF.jar;
CREATE TEMPORARY FUNCTION testUDF AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFAbs';
SELECT * FROM t;
+-----+
|value|
+-----+
| -1.0|
| 2.0|
| -3.0|
+-----+
SELECT testUDF(value) FROM t;
+--------------+
|testUDF(value)|
+--------------+
| 1.0|
| 2.0|
| 3.0|
+--------------+
Contoh di bawah ini menggunakan GenericUDTFExplode yang berasal dari GenericUDTF.
-- Register `GenericUDTFExplode` and use it in Spark SQL
CREATE TEMPORARY FUNCTION hiveUDTF
AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDTFExplode';
SELECT * FROM t;
+------+
| value|
+------+
|[1, 2]|
|[3, 4]|
+------+
SELECT hiveUDTF(value) FROM t;
+---+
|col|
+---+
| 1|
| 2|
| 3|
| 4|
+---+
Hive memiliki dua antarmuka UDAF: UDAF dan GenericUDAFResolver.
Contoh di bawah ini menggunakan GenericUDAFSum yang berasal dari GenericUDAFResolver.
-- Register `GenericUDAFSum` and use it in Spark SQL
CREATE TEMPORARY FUNCTION hiveUDAF
AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFSum';
SELECT * FROM t;
+---+-----+
|key|value|
+---+-----+
| a| 1|
| a| 2|
| b| 3|
+---+-----+
SELECT key, hiveUDAF(value) FROM t GROUP BY key;
+---+---------------+
|key|hiveUDAF(value)|
+---+---------------+
| b| 3|
| a| 3|
+---+---------------+