3

Мы разрабатываем проект, который загружает файлы журналов (пример ниже) из logstach в Google Cloud Storage. Затем пусть App Engine импортирует данные журнала в BigQuery. Проблема заключается в томИмпортировать файлы журналов из Google Cloud Storage в BigQuery

  1. BigQuery не принял некоторые имена полей, таких как @timestamp, созданный logstach, в лог-файл. Как я могу обрабатывать this.Can App Engine делать все, чтобы решить эту проблему?

  2. Как определить схему BigQuery для вложенных JSON (geoip :)?

    { "UUID": "8806ceef34123122cdd009063f301a34158252f53b9a7d3147639fb71f68b585", "item_id": 1234, "member_id": 1234, "admin_id": 0, "cate_id": 131, "listing_status": 3, "monitor_status": 2,» note ":" "," txn_type ":" edit "," ip_address ":" 13.89.42.18 "," email ":" [email protected] "," post_name ":" "," user_agent ":" COM Mozilla /5.0 (Windows NT 6.1; rv: 31.0) Gecko/20100101 Firefox/31.0 "," timestamp ":" 2014-08-22 06:38:53 "," http_host ":" EA1-ZoneS1 ", " @version ":" 1 ", " @timestamp ":" 2014-08-21T23: 38: 59.737Z "," type ":" redis "," ua.name ":" Firefox "," ua.os " : «Windows 7», «ua.os_name»: «Windows 7», «ua.device»: «Другие», «ua.major»: «31», «ua.minor»: «0», «geoip ": {" ф ":" 13.89.42.18" , "country_code2": "XX", "country_code3": "XXX", "COUNTRY_NAME": "XXXXXXX", "continent_code": "AS", "Реги on_name ":" 40" , "city_name": "XXXX", "широта": 123,45, "долгота": 123,45, "часовой пояс": "Азия/Бангкок", "real_region_name": "XXXXXX", "место": [ 123.45,123.45]}}

Извините, что я новичок. Я не мог добавить изображение.

Пожалуйста, дайте мне предложение

Спасибо.

+0

Как я нету с Google App Engine, я могу рассказать вам о вашем первом запросе. На самом деле в Logstash есть опция для удаления полей, которые не требуются. Вы можете игнорировать поле @timestamp, если вы не хотите, чтобы он находился в BigQuery. Для этого используется фильтр calated 'mutate'. Вы можете найти больше по этой ссылке. http://logstash.net/docs/1.4.2/filters/mutate –

+0

Великий Sharma.Even @timestamp filed пришла форма logstash сама. Мы могли бы переименовать его перед отправкой, правильно? – user3769827

+0

да пользователь3769827..Вы правы. –

ответ

5

1) Вы не можете использовать @ или . символы в именах. Вам нужно будет удалить их, запустив данные через что-то вроде этого.

line = line.replace("@", "_")  
line = line.replace("ua.", "ua_") 

2) Вы, возможно, придется изменить некоторые типы, но я был в состоянии загрузить свои данные примера (с указанными выше изменениями) с помощью этого конструктора JSON:

[{ 
    "name": "uuid", 
    "type": "STRING" 
}, { 
    "name": "item_id", 
    "type": "INTEGER" 
}, { 
    "name": "member_id", 
    "type": "INTEGER" 
}, { 
    "name": "admin_id", 
    "type": "INTEGER" 
}, { 
    "name": "cate_id", 
    "type": "INTEGER" 
}, { 
    "name": "listing_status", 
    "type": "INTEGER" 
}, { 
    "name": "monitor_status", 
    "type": "INTEGER" 
}, { 
    "name": "note", 
    "type": "STRING" 
}, { 
    "name": "txn_type", 
    "type": "STRING" 
}, { 
    "name": "ip_address", 
    "type": "STRING" 
}, { 
    "name": "email", 
    "type": "STRING" 
}, { 
    "name": "post_name", 
    "type": "STRING" 
}, { 
    "name": "user_agent", 
    "type": "STRING" 
}, { 
    "name": "timestamp", 
    "type": "TIMESTAMP" 
}, { 
    "name": "http_host", 
    "type": "STRING" 
}, { 
    "name": "_version", 
    "type": "STRING" 
}, { 
    "name": "_timestamp", 
    "type": "TIMESTAMP" 
}, { 
    "name": "type", 
    "type": "STRING" 
}, { 
    "name": "ua_name", 
    "type": "STRING" 
}, { 
    "name": "ua_os", 
    "type": "STRING" 
}, { 
    "name": "ua_os_name", 
    "type": "STRING" 
}, { 
    "name": "ua_device", 
    "type": "STRING" 
}, { 
    "name": "ua_major", 
    "type": "STRING" 
}, { 
    "name": "ua_minor", 
    "type": "STRING" 
}, { 
    "name": "geoip", 
    "type": "RECORD", 
    "fields": [{ 
     "name": "ip", 
     "type": "STRING" 
    }, { 
     "name": "country_code2", 
     "type": "STRING" 
    }, { 
     "name": "country_code3", 
     "type": "STRING" 
    }, { 
     "name": "country_name", 
     "type": "STRING" 
    }, { 
     "name": "continent_code", 
     "type": "STRING" 
    }, { 
     "name": "region_name", 
     "type": "STRING" 
    }, { 
     "name": "city_name", 
     "type": "STRING" 
    }, { 
     "name": "latitude", 
     "type": "FLOAT" 
    }, { 
     "name": "longitude", 
     "type": "FLOAT" 
    }, { 
     "name": "timezone", 
     "type": "STRING" 
    }, { 
     "name": "real_region_name", 
     "type": "STRING" 
    }, { 
     "name": "location", 
     "type": "FLOAT", 
     "mode": "REPEATED" 
    }] 
}] 
+0

Привет, Bruyere, можете ли вы поделиться мне сценарием конструктора JSON? – user3769827

+0

Как в одном для построения таблицы? – Ryan

+0

Конструктор, который генерирует схему выше. Я не уверен, что это то же самое, что «конструировать таблицу», которую вы упоминаете или нет. – user3769827

Смежные вопросы