Apache Spark 未获取数据块中的二进制值

siotufzp  于 2023-03-19  发布在  Apache
关注(0)|答案(2)|浏览(101)

首先,我在数据库中创建了一个二进制数据类型的表

CREATE TABLE binary(binary_col BINARY);

上面的查询在databricks中创建了一个表,现在我使用query向它插入了一个值:

INSERT INTO binary VALUES (X'1');

它已成功上载到表中,但当我查看表时:

将第3行 AQ== 添加到表中,而不是 01
请让我知道这里发生了什么,我认为数据库转换到base64

iqjalb3h

iqjalb3h1#

由此我得出结论,默认情况下它使用base64作为二进制

2o7dmzc5

2o7dmzc52#

这将把二进制值1插入到binary表的binary_col列中。

INSERT INTO binary VALUES (CAST('1' AS BINARY))

有关详细信息,请查看this
我还建议使用pySpark

# Import required libraries
import pandas as pd
from pyspark.sql import SparkSession

# Establish a connection with Databricks using Databricks CLI
spark = SparkSession.builder.appName('pandasToDatabricks').getOrCreate()
spark.conf.set('spark.databricks.service.server.enabled', 'true')
spark.conf.set('spark.databricks.service.token', '<DATABRICKS_ACCESS_TOKEN>')
spark.conf.set('spark.databricks.service.cluster.instanceProfile', '<AWS_INSTANCE_PROFILE>')

# Convert pandas dataframe to spark dataframe
pandas_df = pd.read_csv('data.csv')
spark_df = spark.createDataFrame(pandas_df)

# Create table in Databricks workspace
dbutils.fs.rm('/mnt/<STORAGE_LOCATION>/table', True)
spark_df.write.format('parquet').mode('overwrite').save('/mnt/<STORAGE_LOCATION>/table')

# Insert data into table
spark.sql('CREATE TABLE IF NOT EXISTS table USING parquet LOCATION "/mnt/<STORAGE_LOCATION>/table"')
spark.sql('INSERT INTO table SELECT * FROM table')

相关问题