我有以下代码,它从Marketo系统中获取一些数据
from marketorestpython.client import MarketoClient
munchkin_id = "xxx-xxx-xxx"
client_id = "00000000-0000-0000-0000-00000000000"
client_secret= "secret"
mc = MarketoClient(munchkin_id, client_id, client_secret)
mc.execute(method='get_multiple_leads_by_filter_type', filterType='email', filterValues=['email@domain.com'],
fields=['BG__c','email','company','createdAt'], batchSize=None)
这将返回给我以下数据
[{'BG__c': 'ABC',
'company': 'MCS',
'createdAt': '2016-10-25T14:04:15Z',
'id': 4,
'email': 'email@domain.com'},
{'BG__c': 'CDE',
'company': 'MSC',
'createdAt': '2018-03-28T16:41:06Z',
'id': 10850879,
'email': 'email@domain.com'}]
我想做的是,保存这个返回到一个拼花文件。但是当我用下面的代码尝试时,我收到了一条错误消息。
from marketorestpython.client import MarketoClient
munchkin_id = "xxx-xxx-xxx"
client_id = "00000000-0000-0000-0000-00000000000"
client_secret= "secret"
mc = MarketoClient(munchkin_id, client_id, client_secret)
data = mc.execute(method='get_multiple_leads_by_filter_type', filterType='email', filterValues=['email@domain.com'],
fields=['BG__c','email','company','createdAt'], batchSize=None)
sqlContext.read.json(data)
data.write.parquet("adl://subscription.azuredatalakestore.net/folder1/Marketo/marketo_data")
java.lang.ClassCastException: java.util.HashMap cannot be cast to java.lang.String
---------------------------------------------------------------------------
Py4JJavaError Traceback (most recent call last)
<command-1431708582476650> in <module>()
7 fields=['BG__c','email','company','createdAt'], batchSize=None)
8
----> 9 sqlContext.read.json(data)
10 data.write.parquet("adl://subscription.azuredatalakestore.net/folder1/Marketo/marketo_data")
/databricks/spark/python/pyspark/sql/readwriter.py in json(self, path, schema, primitivesAsString, prefersDecimal, allowComments, allowUnquotedFieldNames, allowSingleQuotes, allowNumericLeadingZero, allowBackslashEscapingAnyCharacter, mode, columnNameOfCorruptRecord, dateFormat, timestampFormat, multiLine, allowUnquotedControlChars, charset)
261 path = [path]
262 if type(path) == list:
--> 263 return self._df(self._jreader.json(self._spark._sc._jvm.PythonUtils.toSeq(path)))
264 elif isinstance(path, RDD):
265 def func(iterator):
/databricks/spark/python/lib/py4j-0.10.6-src.zip/py4j/java_gateway.py in __call__(self, *args)
1158 answer = self.gateway_client.send_command(command)
1159 return_value = get_return_value(
-> 1160 answer, self.gateway_client, self.target_id, self.name)
1161
我做错了什么?
根据代码中的以下语句,您直接写入数据。您必须首先创建数据帧。您可以使用 val df = sqlContext.read.json(“path/to/json/file”)将 json 转换为 df。然后执行 df.写入
data.write.parquet("adl://subscription.azuredatalakestore.net/folder1/Marketo/marketo_data")
您有以下数据
data = [{'BG__c': 'ABC',
'company': 'MCS',
'createdAt': '2016-10-25T14:04:15Z',
'id': 4,
'email': 'email@domain.com'},
{'BG__c': 'CDE',
'company': 'MSC',
'createdAt': '2018-03-28T16:41:06Z',
'id': 10850879,
'email': 'email@domain.com'}]
为了将它保存到拼花文件中,我建议创建一个数据帧,然后将其保存为拼花文件。
from pyspark.sql.types import *
df = spark.createDataFrame(data,
schema = StructType([
StructField("BC_g", StringType(), True),
StructField("company", StringType(), True),
StructField("createdAt", StringType(), True),
StructField("email", StringType(), True),
StructField("id", IntegerType(), True)]))
这将给出以下类型:
df.dtypes
[('BC_g', 'string'),
('company', 'string'),
('createdAt', 'string'),
('email', 'string'),
('id', 'int')]
然后,您可以将数据框保存为拼花文件
df.show()
+-----+-------+--------------------+----------------+--------+
|BG__c|company| createdAt| email| id|
+-----+-------+--------------------+----------------+--------+
| ABC| MCS|2016-10-25T14:04:15Z|email@domain.com| 4|
| CDE| MSC|2018-03-28T16:41:06Z|email@domain.com|10850879|
+-----+-------+--------------------+----------------+--------+
df.write.format('parquet').save(parquet_path_in_hdfs)
其中parquet_path_in_hdfs是所需拼花文件的路径和名称
问题内容: 我有一个mysqli查询,我需要将其格式化为移动应用程序的JSON。 我已经设法为查询结果生成一个XML文档,但是我正在寻找更轻量的东西。(有关我当前的XML代码,请参见下文) 问题答案: 这样的输出: 如果您想要其他样式,可以尝试以下方法: 输出将是这样的:
问题内容: 由于使用JDBC连接器进行MySQL查询,因此我有一个结果集。所以我的工作是将结果集转换为JSON格式。这样我就可以将其作为AJAX响应发送到客户端。有人可以解释一下如何转换为JSON格式,因为我对Java和JSON都是新手 问题答案: 许多人正确地回答了这个问题。但是,我认为我可以使用以下几小段代码为该帖子添加更多价值。它使用Apache-DBUtils和Gson库。
问题内容: 我从JavaScript进行$ getJSON调用得到以下结果。如何在JavaScript中将start属性转换为正确的日期? [{“ id”:1,“ start”:“ / Date(1238540400000)/”},{“ id”:2,“ start”:“ / Date(1238626800000)/”}] 谢谢! 问题答案: 您需要从字符串中提取数字,并将其传递给Date : 这些
问题内容: 我想将结果数组转换为PHP中的JSON格式。这是我的代码: 我想转换为JSON格式并将JSON数据传递给jQuery插件。 问题答案: 在php> 5.2.0中可用:
问题内容: 我想仅使用简单的MySQL命令将结果表转换为MySQL中的JSON数组。例如查询 预期的JSON输出为 有没有办法在普通的MySQL中做到这一点? 编辑: 有一些答案,例如如何使用MySQL和PHP做到这一点,但我找不到纯MySQL解决方案。 问题答案: 新解决方案: 使用您的精彩评论构建,谢谢! 旧解决方案: 在@Schwern的帮助下,我设法提出了这个查询,这似乎行得通!
问题内容: 我从JavaScript进行的$ getJSON调用得到以下结果。如何在JavaScript中将start属性转换为正确的日期? [{“ id”:1,“ start”:“ / Date(1238540400000)/”},{“ id”:2,“ start”:“ / Date(1238626800000)/”}] 谢谢! 问题答案: 您需要从字符串中提取数字,并将其传递给Date : 这