我在 hive 中有一个表,我正在 pyspark df_sprk_df 中读取该表
from pyspark import SparkContext
from pysaprk.sql import HiveContext
sc = SparkContext()
hive_context = HiveContext(sc)
df_sprk_df = hive_context.sql('select * from databasename.tablename')
df_pandas_df = df_sprk_df.toPandas()
df_pandas_df = df_pandas_df.astype('str')
但是当我尝试将 df_pandas_df 转换为 str 的 astype 时。但我收到类似的错误
UnicodeEnCodeError :'ascii' codec cant encode character u'\u20ac' in position
即使我尝试将列一一转换为 str
for cols in df_pandas_df.columns:
df_pandas_df[cols] = df_pandas_df[cols].str.encode('utf-8')
但运气不好,所以基本上如何将 hive 表导入到 utf-8 编码的数据帧
最佳答案
所以这个解决方法有助于解决这个问题,通过更改 session 的默认编码
import sys
reload(sys)
sys.setdefaultencoding('UTF-8')
然后
df_pandas_df = df_pandas_df.astype(str)
将整个数据帧转换为字符串 df。
关于python - pyspark Hive Context -- 使用 UTF-8 编码读取表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52076651/