2017-04-30 1 views
0

Ich erstellte eine Tabelle in Hive und die geladenen Daten aus externen CSV-Datei. Wenn ich versuche, die Daten von Python zu drucken, bekomme ich wie" ['\ x00 "\ x00m \ x00e \ x00s \ x00s \ x00a \ x00g \ x00e \ x00" \ x00'] ". Wenn ich Hive GUI abfrage, sind die Ergebnisse korrekt. Bitte sagen Sie mir, wie ich die gleichen Ergebnisse über erhalten kann . python-ProgrammHive-Abfrage von Python-Programm gibt Ausgabe wie "x00e x00" x00 "

Mein python-Code:

import pyhs2 

with pyhs2.connect(host='192.168.56.101', 
       port=10000, 
       authMechanism='PLAIN', 
       user='hiveuser', 
       password='password', 
       database='anuvrat') as conn: 
with conn.cursor() as cur: 
    cur.execute('SELECT message FROM ABC_NEWS LIMIT 5') 

    print cur.fetchone() 

Ausgang ist:

/usr/bin/python2.7 /home/anuvrattiku/SPRING_2017/CMPE239/Facebook_Fake_news_detection/code_fake_news/code.py 
['\x00"\x00m\x00e\x00s\x00s\x00a\x00g\x00e\x00"\x00'] 

Process finished with exit code 0 

Wenn ich die gleiche Tabelle in Hive abfragen, erhalte ich die folgende Ausgabe:

enter image description here

Dies ist, wie ich die Tabelle erstellt:

CREATE TABLE ABC_NEWS(
ID STRING, 
PAGE_ID INT, 
NAME STRING, 
MESSAGE STRING, 
DESCRIPTION STRING, 
CAPTION STRING, 
POST_TYPE STRING, 
STATUS_TYPE STRING, 
LIKES_COUNT SMALLINT, 
COMMENTS SMALLINT, 
SHARES_COUNT SMALLINT, 
LOVE_COUNT SMALLINT, 
WOW_COUNT SMALLINT, 
HAHA_COUNT SMALLINT, 
SAD_COUNT SMALLINT, 
THANKFUL_COUNT SMALLINT, 
ANGRY_COUNT SMALLINT, 
LINK STRING, 
IMAGE_LINK STRING, 
POSTED_AT STRING 
) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY "," ESCAPED BY '\\'; 

die CSV-Datei der Tabelle zum Laden ist in der Pfad unter: https://www.dropbox.com/s/fiwygyqt8u9eo5s/abc-news-86680728811.csv?dl=0

+0

(1) Sie verwenden ein Modul, das wird nicht mehr gepflegt https://github.com/BradRuderman/pyhs2 (2) Dies ist eindeutig ein Kodierungsproblem, optional auf der hiveserver2-Seite. (3) Ich modifiziere die Post-Tags. Wenn Sie die Annahme der schrecklichen Antwort, die Sie erhalten haben, widerrufen, haben Sie möglicherweise eine Chance, eine vernünftige Antwort zu erhalten. –

+0

@DuduMarkovitz: Hallo Dudu, bitte bieten Sie eine Lösung für das Problem –

Antwort

0
  1. Da der Text qualifiziert ist (") und in einem qualifizierten Text gibt es Vorkommen des Trennzeichens (,), sollten Sie CSV Serde
  2. verwenden Sie haben versucht, cur.fetchone() zu drucken, die eine Liste und keine Zeichenfolge ist, daher ein Array von Bytes erhalten, während Sie die erstes Element der Liste - cur.fetchone()[0]

create external table abc_news 
(
    id    string 
    ,page_id   int 
    ,name   string 
    ,message   string 
    ,description  string 
    ,caption   string 
    ,post_type  string 
    ,status_type  string 
    ,likes_count  smallint 
    ,comments  smallint 
    ,shares_count smallint 
    ,love_count  smallint 
    ,wow_count  smallint 
    ,haha_count  smallint 
    ,sad_count  smallint 
    ,thankful_count smallint 
    ,angry_count  smallint 
    ,link   string 
    ,image_link  string 
    ,posted_at  string 
) 
row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
with serdeproperties 
(
    'separatorChar' = ',' 
    ,'quoteChar'  = '"' 
) 
stored as textfile 
; 

>>> import pyhs2 
>>> 
>>> with pyhs2.connect(host='localhost',port=10000,authMechanism='PLAIN',user='cloudera',password='cloudera',database='local_db') as conn: 
...  with conn.cursor() as cur: 
...   cur.execute('SELECT message FROM ABC_NEWS LIMIT 10') 
...   for i in cur.fetch(): 
...    print i[0] 
...    
...    
... 
"message" 
"Roberts took the unusual step of devoting the majority of his annual report to the issue of judicial ethics." 
"Do you agree with the new law?" 
"Some pretty cool confetti will rain down on New York City celebrators." 
NULL 
"The pharmacy was held up by a man seeking prescription medication. " 
NULL 
"There were no immediate reports of damage or injuries." 
"Were you an LCD screen early adopter? A settlement may be headed your way." 
"As Americans get bigger, passenger limits are becoming more restrictive." 
>>> 
Verwandte Themen