Ich bin mit einem sehr seltsamen Problem in Bienenstock in der Produktionsumgebung (cloudera 5.5) konfrontiert, die im Grunde nicht auf meinem lokalen Server reproduzierbar ist (weiß nicht warum), dh für einige Datensätze habe ich falsche Timestamp Wert Beim Einfügen von der temporären Tabelle in die Haupttabelle wird der String "2017-10-21 23" beim Einfügen in den Zeitstempel "2017-10-21 23:00:00" Datentyp konvertiert.TimeStamp Problem in Bienenstock 1.1
Beispiel ::
2017-10-21 23 -> 2017-10-21 22:00:00
2017-10-22 15 -> 2017-10-22 14:00:00
Es geschieht sehr, sehr selten. Bedeutet Delta-Wert ist etwa 1% der Daten.
Flow ::: Die Daten in der temporären Tabelle (externe Tabelle) werden stündlich mit oozie gefüllt. Die Anweisung insert wird stündlich ausgeführt, um aus der temporären Tabelle in die Haupttabelle (interne Tabelle in ORC) in der Struktur mithilfe des Oozie-Workflows einzufügen.
Flussübersicht ::: Linux-Protokolle >> Protokolle in Temp-Tabelle kopieren (externe Hive-Tabelle) >> in Haupt-Hive-Tabelle einfügen.
Einfügen von temporären Tabelle auf Haupttabelle :::
FROM
temp
INSERT INTO TABLE
main
PARTITION(event_date,service_id)
SELECT
from_unixtime(unix_timestamp(event_timestamp ,'yyyy-MM-dd HH'), 'yyyy-MM-dd HH:00:00.0'),
col3,
col4,
"" as partner_nw_name,
col5,
"" as country_name,
col6,
col7,
col8,
col9,
col10,
col11,
col12,
col13,
col14,
col15,
kpi_id,
col18,
col19,
col20,
col21,
col23,
col24,
col25,
from_unixtime(unix_timestamp(event_timestamp ,'yyyy-MM-dd HH'), 'yyyy-MM-dd') as event_date,
service_id;
Temp-Tabelle :::
hive> desc temp;
OK
event_timestamp string
col2 int
col3 int
col4 int
col5 int
col6 string
col7 string
col8 string
col9 string
col10 string
col11 int
col12 int
col13 string
col14 string
col15 string
service_id int
kpi_id int
col18 bigint
col19 bigint
col20 bigint
col21 bigint
col22 double
col23 string
col24 int
col25 int
Time taken: 0.165 seconds, Fetched: 25 row(s)
Haupt Tabelle :::
hive> desc main;
OK
event_timestamp timestamp
col3 int
col4 int
partner_nw_name string
col5 int
country_name string
col6 string
col7 string
col8 string
col9 string
col10 int
col11 int
col12 int
col13 string
col14 string
col15 string
kpi_id int
col18 bigint
col19 bigint
col20 bigint
col21 bigint
col23 double
col24 int
col25 int
event_date date
service_id int
# Partition Information
# col_name data_type comment
event_date date
service_id int
Time taken: 0.175 seconds, Fetched: 32 row(s)
ich erwarte '2017.10.21 23 -> 2017.10.21 23: 00: 00 '. Es gibt höchstens richtige Antwort. Aber manchmal ändert es die Werte der Stunde, wie im Beispiel gezeigt. –
Sie sagen, dass die Quelle eine Zeichenkette rechts ist. Zeichenkette "2017-10-21 23" .. Es könnten einige zusätzliche Zeichen an die Zeichenkette angehängt werden .. zum Beispiel "('2017-10-21 - 23 ',' JJJJ-MM-TT HH ') "gibt" 2017-10-20 01: 00: 00.0 ".. bitte überprüfen Sie die Daten über Farbton oder kopieren Sie die Datei zu lokalen und überprüfen. – sk7979
Ich überprüfte diese Daten. Die Daten waren richtig und dann habe ich den Fluss auf Lokal mit denselben Daten ausgeführt und in Lokal gibt es mir richtige Ausgabe. Deshalb kann ich das Problem nicht beheben. –