import pyarrow as pa
from deltalake import write_deltalake
# Create a sample Arrow Table with a map type
data = {
"id": pa.array([1, 2, 3]),
"name": pa.array(["Alice", "Bob", "Charlie"]),
"attributes": pa.array([
pa.array([("age", 30)], type=pa.map_(pa.string(), pa.int32())),
pa.array([("age", 25)], type=pa.map_(pa.string(), pa.int32())),
pa.array([("age", 35)], type=pa.map_(pa.string(), pa.int32())),
])
}
# Create an Arrow Table
table = pa.Table.from_pydict(data)
# Define the path where the Delta table will be stored
delta_table_path = "./tmp/delta_map"
# Write the Arrow Table to a Delta table
write_deltalake(delta_table_path, data=table, mode="overwrite")
pyarrow выдает: pyarrow.lib.ArrowTypeError: не удалось преобразовать 'a' с типом str: ожидался кортеж пары (ключ, значение)
from deltalake import Schema, Field, DeltaTable, WriterProperties, write_deltalake
from deltalake.schema import PrimitiveType, MapType
# Define the schema for the Delta table
schema = Schema([
Field("id",PrimitiveType("string")),
Field("data", MapType("integer", "string", value_contains_null=False))
])
# Create a list of data to write to the Delta table
data = [
{"id": "1", "data": {"key1": "value1", "key2": "value2"}},
{"id": "2", "data": {"key3": "value3", "key4": "value4"}}
]
# Create a Delta table
delta_table = write_deltalake(table_or_uri="./tmp/delta_map", data=data,
schema=schema,mode="append",
writer_properties=WriterProperties(compression="ZSTD")
)
# Write the data to the Delta table
delta_table.write_data(data)
deltalake выдает: NotImplementedError: ArrowSchemaConversionMode.passthrough не реализован для работы с DeltaSchema, пропуска передачи схемы или передачи схемы стрелки.
Thx
Используя Spark, я могу создать дельта-таблицу с типом столбца карты: MAP
Как создать дельта-таблицу с типом карты без Spark?
Я попробовал несколько подходов, и ни один из них не работает. [code]import pyarrow as pa from deltalake import write_deltalake
# Create a sample Arrow Table with a map type data = { "id": pa.array([1, 2, 3]), "name": pa.array(["Alice", "Bob", "Charlie"]), "attributes": pa.array([ pa.array([("age", 30)], type=pa.map_(pa.string(), pa.int32())), pa.array([("age", 25)], type=pa.map_(pa.string(), pa.int32())), pa.array([("age", 35)], type=pa.map_(pa.string(), pa.int32())), ]) }
# Create an Arrow Table table = pa.Table.from_pydict(data)
# Define the path where the Delta table will be stored delta_table_path = "./tmp/delta_map"
# Write the Arrow Table to a Delta table write_deltalake(delta_table_path, data=table, mode="overwrite") [/code] pyarrow выдает: pyarrow.lib.ArrowTypeError: не удалось преобразовать 'a' с типом str: ожидался кортеж пары (ключ, значение) [code]from deltalake import Schema, Field, DeltaTable, WriterProperties, write_deltalake from deltalake.schema import PrimitiveType, MapType
# Define the schema for the Delta table schema = Schema([ Field("id",PrimitiveType("string")), Field("data", MapType("integer", "string", value_contains_null=False)) ])
# Create a list of data to write to the Delta table data = [ {"id": "1", "data": {"key1": "value1", "key2": "value2"}}, {"id": "2", "data": {"key3": "value3", "key4": "value4"}} ]
# Write the data to the Delta table delta_table.write_data(data)
[/code] deltalake выдает: NotImplementedError: ArrowSchemaConversionMode.passthrough не реализован для работы с DeltaSchema, пропуска передачи схемы или передачи схемы стрелки. Thx