我尝试在雅典娜中为s3中的嵌套json文件创建一个表,但是收到了一个错误:
第1:8行:输入“创建外部”(service: amazonathena;状态代码: 400;错误代码:失效请求异常;请求id: dcea57c7-b801-41a4-8edb-e42eb1608fea)
表名和字段似乎没问题,还附上了我的s3源代码中的示例json。已经提交了雅典娜的官方文件。此外,让我知道是否和如何添加嵌套字段创建表向导在雅典娜。
我的问题是:
CREATE EXTERNAL TABLE bhaskar_clevertap(
eventName string,
ts bigint,
eventProps struct<
ContentCategory: string,
Previous_screen: string,
Platform: string,
Category: string,
Status: string,
CT Source: string,
CT Latitude: int,
CT Longitude: int,
Phone: bigint,
ADID: string,
Email: string,
ScreenName: string,
DBID: bigint,
App_version: string,
Device_ID: string,
CT App Version: string>,
profile struct<
objectId: string,
all_identities: string,
identity: bigint,
platform: string,
phone: bigint,
name: string,
email: string,
push_token: string>,
deviceInfo struct<
osVersion: int,
sdkVersion: int,
make: string,
model: string,
appVersion: string,
browser: string,
dpi: int>,
dimensions struct<
width: int,
height: int,
unit: string>
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
LOCATION 's3://clevertap-data-bhaskarapp/' 示例json对象如下所示:
{
"eventName": "ScreenView",
"ts": 20200106073433,
"eventProps": {
"ContentCategory": "ePaper",
"Previous_screen": "",
"Platform": "Android",
"Category": "ePaper",
"Status": "LoggedIn",
"CT Source": "Mobile",
"CT Latitude": 25.613659,
"CT Longitude": 85.101135,
"Phone": "+917678284002",
"ADID": "fc2adc9b-6e31-459c-9bee-d6039a263e5c",
"Email": "1008894402@dbcorp.in",
"ScreenName": "ePaper_BIHAR_पटना_पटना_Page3",
"DBID": "1008894402",
"App_version": "6.1.0",
"Device_ID": "3fccfa7749a8fba2",
"CT App Version": "6.1.0"
},
"profile": {
"objectId": "__gfc2adc9b6e31459c9beed6039a263e5c",
"all_identities": ["7678284***", "1008894402@****"],
"identity": "7678284***",
"platform": "Android",
"phone": 917678284***,
"name": "NA",
"email": "1008894402@****",
"push_token": "fcm:dAI-w-gLwyk:APA91bE5E3pz63NMnV9rxqMwYTsOtQnmwjI8ZdElIX98fo0qiCPVnvekDwMMt27tAuI1F5PZmufw1OLpC_6V_hE_n_9eUVn8tF7EqA9MUu80wionD2FYtj*****FrSQDnDJoTFVZFmqg"
},
"deviceInfo": {
"osVersion": "7.0",
"sdkVersion": "30501",
"make": "Xiaomi",
"model": "Redmi Note 4",
"appVersion": "6.1.0",
"browser": "MobileApp",
"dpi": 480,
"dimensions": {
"width": 69,
"height": 121,
"unit": "mm"
}
}}
请帮助我发现问题与我的查询。
发布于 2020-01-27 11:55:34
从雅典娜博士 wrt到列名限制并不十分清楚。然而,在我看来,您的问题似乎源于这样一个事实:一些字段(列名)中有空格,例如CT Source、CT Latitude、CT Longitude和CT App Version。我成功地创建了表,方法是在这个名称周围加上backticks。
CREATE EXTERNAL TABLE bhaskar_clevertap_2(
eventName string,
ts bigint,
eventProps struct<
ContentCategory: string,
Previous_screen: string,
Platform: string,
Category: string,
Status: string,
`CT Source`: string,
`CT Latitude`: int,
`CT Longitude`: int,
Phone: bigint,
ADID: string,
Email: string,
ScreenName: string,
DBID: bigint,
App_version: string,
Device_ID: string,
`CT App Version`: string>,
profile struct<
objectId: string,
all_identities: string,
identity: bigint,
platform: string,
phone: bigint,
name: string,
email: string,
push_token: string>,
deviceInfo struct<
osVersion: int,
sdkVersion: int,
make: string,
model: string,
appVersion: string,
browser: string,
dpi: int>,
dimensions struct<
width: int,
height: int,
unit: string>
)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
LOCATION
's3://clevertap-data-bhaskarapp/' https://stackoverflow.com/questions/59930025
复制相似问题