Support Questions

Find answers, ask questions, and share your expertise
Announcements
Check out our newest addition to the community, the Cloudera Data Analytics (CDA) group hub.

Hive Insert into table issue

Explorer

I need to create a table with just a field, which is a map of string: string. I have created the table without problems, but when I try to insert the values (they are defined, not in another table) I am not able to achieve it. The code is below.

create table comunidades ( codigo MAP<STRING, STRING> );
INSERT INTO TABLE comunidades SELECT 1, {"AND": '01'};
1 ACCEPTED SOLUTION

Mentor

@Luis Ruiz

I tried recreating your situation and it worked. see attached.To use the map function the source tables should already exist. I used a text file ruiz.txt with values

$ cat ruiz.txt
"AND": '01'
"TOO": '02'
"MORE": '03'

Hope that helps please accept the reponse if it resolved your problem!

View solution in original post

12 REPLIES 12

@Luis Ruiz

Are you trying to insert from one table to another and facing this issue?

If that is the case then when you are inserting from one table to another then you may need to convert the columns into MAP as you have used MAP in the second table.

Explorer

@Luis Ruiz

You should use map() complex type constructor in your insert statement.

insert into table testMap SELECT map('AND','01');

You can find more details about complex type constructors from here:

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

Explorer
@Jagruti Varia

I've just tried your command and it returns an error. I'm using the Hortonworks Sandbox, and I don't understand why it throws that error.

org.apache.hive.service.cli.HiveSQLException: Error while compiling statement: FAILED: ParseException line 1:52 Failed to recognize predicate '<EOF>'. Failed rule: 'regularBody' in statement

Mentor

@Luis Ruiz

I tried recreating your situation and it worked. see attached.To use the map function the source tables should already exist. I used a text file ruiz.txt with values

$ cat ruiz.txt
"AND": '01'
"TOO": '02'
"MORE": '03'

Hope that helps please accept the reponse if it resolved your problem!

Explorer

@Geoffrey Shelton Okot

I have repeated your steps in Ambari and it throws me an error (below). I have checked the community entries and it's something repeated. I don't know if there is a solution yet for this issue.

java.sql.SQLException: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask

Mentor

@Luis Ruiz

Try this

# cd /tmp/data 
# su - hdfs 
$ hdfs dfs -copyFromLocal autonomias.txt  /apps/hive/warehouse/ 
$ hdfs dfs -chown -R hive:hive  /apps/hive/warehouse/ 
hive> load data inpath '/apps/hive/warehouse/autonomias.txt' into table comunidades;

Tell me that should work

Explorer
@Geoffrey Shelton Okot

In Ambari I have no terminal client, I upload files through a visual interface and the permissions for the file and folder are all enabled. I though the same, a problem with the permissions, but not. I don't know if the Sandbox is limited in some Hive operations

Mentor

@Luis Ruiz

Install putty to interact with your sandbox from your desktop, let download what is the version of sandbox?

Explorer

@Geoffrey Shelton Okot

Yes I know about putty, but it is possible to do also from Ambari. I will try to do it from putty.

The version of the sandbox is 2.6.1 for VirtualBox. It's available here: https://es.hortonworks.com/downloads/#sandbox

Explorer
@Geoffrey Shelton Okot

The table was filled in the previous actions, but the Ambari platform throws me the specified error above. Now I would need to specify the values into file ruiz.txt as proper key-value pairs, and not inserting null after the file rows. I'll look how to do it. Thank you very much for your patience

Mentor

@Luis Ruiz

Nice to know it helped, that's the open source spirit 🙂

Explorer

Yes, it's the better way to solve problems 🙂

Take a Tour of the Community
Don't have an account?
Your experience may be limited. Sign in to explore more.