理想情况下,以下代码片段将起作用:
import kudu
from kudu.client import Partitioning
df = … #some spark dataframe
# Connect to Kudu master server
client = kudu.connect(host=‘…‘, port=7051)
# infer schema from spark dataframe
schema = df.schema
# Define partitioning schema
partitioning = Partitioning().add_hash_partitions(column_names=['key'], num_buckets=3)
# Create new table
client.create_table('dev.some_example', schema, partitioning)
但是 client.create_table 需要一个 kudu.schema.Schema 而不是来自数据帧的结构。但是在 Scala 中,您可以这样做(来自https://kudu.apache.org/docs/developing.html):
kuduContext.createTable(
"dev.some_example", df.schema, Seq("key"),
new CreateTableOptions()
.setNumReplicas(1)
.addHashPartitions(List("key").asJava, 3))
现在我想知道是否可以在不使用 kudu 模式构建器手动定义每一列的情况下对 PySpark 执行相同的操作?