我正在尝试将我的 pyspark sql 数据帧转换为 json,然后另存为文件。
df_final = df_final.union(join_df)
Run Code Online (Sandbox Code Playgroud)
df_final 包含这样的值:
我试过这样的事情。但它创建了一个无效的 json。
df_final.coalesce(1).write.format('json').save(data_output_file+"createjson.json", overwrite=True)
{"Variable":"Col1","Min":"20","Max":"30"}
{"Variable":"Col2","Min":"25,"Max":"40"}
Run Code Online (Sandbox Code Playgroud)
我预期的文件应该有如下数据:
[
{"Variable":"Col1",
"Min":"20",
"Max":"30"},
{"Variable":"Col2",
"Min":"25,
"Max":"40"}]
Run Code Online (Sandbox Code Playgroud) 当我将列定义为时NVARCHAR(MAX),我无法索引该列.但我当然无法定义列,NVARCHAR(4000)因为我假设数据字符串有时会更长.
任何人都可以建议如何使用NVARCHAR(MAX)数据定义索引列,还是可以将长度从4000增加到更多?
当我连接到ireport时,如果在hive shell中显示表格,则会出现此错误:
元数据错误:java.lang.RuntimeException:无法实例化org.apache.hadoop.hive.metastore.HiveMetaStoreClient FAILED:执行错误,从org.apache.hadoop.hive.ql.exec.DDLTask返回代码1
我的字段包含字符串值,如JUL/11/2017,JAN/11/17.虽然它是一个有效的字段,但我无法使用is_date函数对其进行验证
SET DATEFORMAT MDY;
if isdate('JUL/11/2017')=1
print 'VALID_DATE'
else
print 'invalid date'
Run Code Online (Sandbox Code Playgroud)
如果字段值为DD/MMM/YY或DD/MMM/YYYY,则可以正常工作.任何人都可以帮我验证这个领域.
注意:我也尝试过使用set语言选项.
我试图找到由 sql 语句产生的每个字段的 min 、 max 并将其写入一个 csv 文件。我试图以低于方式获得结果。能否请你帮忙。我已经用 python 编写过,但现在尝试将其转换为 pyspark 以直接在 hadoop 集群中运行
from pyspark.sql.functions import max, min, mean, stddev
from pyspark import SparkContext
sc =SparkContext()
from pyspark.sql import HiveContext
hive_context = HiveContext(sc)
#bank = hive_context.table("cip_utilities.file_upload_temp")
data=hive_context.sql("select * from cip_utilities.cdm_variables_dict")
hive_context.sql("describe cip_utilities.cdm_variables_dict").registerTempTable("schema_def")
temp_data=hive_context.sql("select * from schema_def")
temp_data.show()
data1=hive_context.sql("select col_name from schema_def where data_type<>'string'")
colum_names_as_python_list_of_rows = data1.collect()
#data1.show()
for line in colum_names_as_python_list_of_rows:
#print value in MyCol1 for each row
---Here i need to calculate min, max, mean etc for …Run Code Online (Sandbox Code Playgroud) python-3.x apache-spark apache-spark-sql pyspark pyspark-sql
我正在尝试从我的 spark 数据帧创建一个嵌套的 json,它具有以下结构的数据。下面的代码正在创建一个带有键和值的简单 json。能否请你帮忙
df.coalesce(1).write.format('json').save(data_output_file+"createjson.json", overwrite=True)
Run Code Online (Sandbox Code Playgroud)
更新 1:根据@MaxU 的回答,我将 spark 数据框转换为 pandas 并使用了 group by。它将最后两个字段放入嵌套数组中。我如何首先将类别和计数放在嵌套数组中,然后在该数组中放入子类别和计数。
示例文本数据:
Vendor_Name,count,Categories,Category_Count,Subcategory,Subcategory_Count
Vendor1,10,Category 1,4,Sub Category 1,1
Vendor1,10,Category 1,4,Sub Category 2,2
Vendor1,10,Category 1,4,Sub Category 3,3
Vendor1,10,Category 1,4,Sub Category 4,4
j = (data_pd.groupby(['vendor_name','vendor_Cnt','Category','Category_cnt'], as_index=False)
.apply(lambda x: x[['Subcategory','subcategory_cnt']].to_dict('r'))
.reset_index()
.rename(columns={0:'subcategories'})
.to_json(orient='records'))
Run Code Online (Sandbox Code Playgroud)
[{
"vendor_name": "Vendor 1",
"count": 10,
"categories": [{
"name": "Category 1",
"count": 4,
"subCategories": [{
"name": "Sub Category 1",
"count": 1
},
{
"name": "Sub Category 2",
"count": 1
},
{
"name": "Sub Category 3",
"count": …Run Code Online (Sandbox Code Playgroud) pyspark ×3
pyspark-sql ×3
python-3.x ×3
apache-spark ×2
sql ×2
sql-server ×2
hadoop ×1
hive ×1
ireport ×1