我有许多拼花格式的 Hive 文件,其中包含<powershell>
function Disable-InternetExplorerESC {
$AdminKey = "HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}"
$UserKey = "HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A8-37EF-4b3f-8CFC-4F3A74704073}"
Set-ItemProperty -Path $AdminKey -Name "IsInstalled" -Value 0 -Force
Set-ItemProperty -Path $UserKey -Name "IsInstalled" -Value 0 -Force
Remove-ItemProperty -Path $AdminKey -Name "IsInstalled" -Force
Remove-ItemProperty -Path $UserKey -Name "IsInstalled" -Force
}
Disable-InternetExplorerESC
</powershell>
和string
列。我可以使用以下语法将大部分内容读入带有double
的Spark数据框:
sparklyr
但是,我读了一个文件,其中所有spark_read_parquet(sc, name = "name", path = "path", memory = FALSE)
值都被转换为无法识别的列表,当收集到R数据框并打印时,这些列表看起来像这样:
string
s_df <- spark_read_parquet(sc,
name = "s_df",
path = "hdfs://nameservice1/user/hive/warehouse/s_df",
memory = FALSE)
df <- collect(s_df)
head(df)
# A tibble: 11,081 x 13
provid hospital_name servcode servcode_desc codegroup claimid amountpaid
<list> <list> <list> <list> <list> <list> <dbl>
1 <raw [8… <raw [32]> <raw [5]> <raw [25]> <raw [29… <raw [1… 7.41
2 <raw [8… <raw [32]> <raw [5]> <raw [15]> <raw [22… <raw [1… 4.93
3 <raw [8… <raw [32]> <raw [5]> <raw [28]> <raw [22… <raw [1… 5.36
4 <raw [8… <raw [32]> <raw [5]> <raw [28]> <raw [30… <raw [1… 5.46
5 <raw [8… <raw [32]> <raw [5]> <raw [16]> <raw [30… <raw [1… 2.80
的前5行的hospital_name
应该是df
,但是会这样出来:
METHODIST HOSPITAL OF SOUTHERN CALIFORNIA
我尝试了以下解决方案,但它没有工作:
head(df$hospital_name)
[[1]]
[1] 48 45 4e 52 59 20 4d 41 59 4f 20 4e 45 57 48 41 4c 4c 20 4d 45 4d 4f 52 49
[26] 41 4c 20 48 4f 53 50
[[2]]
[1] 48 45 4e 52 59 20 4d 41 59 4f 20 4e 45 57 48 41 4c 4c 20 4d 45 4d 4f 52 49
[26] 41 4c 20 48 4f 53 50
[[3]]
[1] 48 45 4e 52 59 20 4d 41 59 4f 20 4e 45 57 48 41 4c 4c 20 4d 45 4d 4f 52 49
[26] 41 4c 20 48 4f 53 50
[[4]]
[1] 48 45 4e 52 59 20 4d 41 59 4f 20 4e 45 57 48 41 4c 4c 20 4d 45 4d 4f 52 49
[26] 41 4c 20 48 4f 53 50
[[5]]
[1] 48 45 4e 52 59 20 4d 41 59 4f 20 4e 45 57 48 41 4c 4c 20 4d 45 4d 4f 52 49
[26] 41 4c 20 48 4f 53 50
我感谢能够解决问题的任何帮助,或者提出任何建议,以使我的请求更加明确。感谢。
答案 0 :(得分:1)
一个代表会很好(仅适用于df),例如使用dput(head(df))
并将结果粘贴到此处。
请尝试以下方法:
df %>% mutate(hospital_name = unlist(lapply(hospital_name, function(e) rawToChar(e))))
答案 1 :(得分:0)
要在读取实木复合地板文件之前解决Spark Session配置的问题集spark.sql.parquet.binaryAsString属性:
sc$config$spark.sql.parquet.binaryAsString = TRUE
备注:在我的情况下,事实证明,因在IMPALA中插入而创建的拼花文件包含描述为“二进制”而不是“二进制UTF8”的“字符字段”。在这种情况下,另一种解决方案是在插入数据之前在impala-shell中设置PARQUET_ANNOTATE_STRINGS_UTF8:
> set PARQUET_ANNOTATE_STRINGS_UTF8=1;
PARQUET_ANNOTATE_STRINGS_UTF8 set to 1