seems the metastore thrift service support SASL. thats great. so if i understand it correctly all i need is the metastore thrift definition to query the metastore. is the metastore thrift definition stable across hive versions? if so, then i can build my app once without worrying about the hive version deployed. in that case i admit its not as bad as i thought. lets see!
On Sat, Jan 31, 2015 at 2:41 PM, Koert Kuipers <ko...@tresata.com> wrote: > oh sorry edward, i misread you post. seems we agree that "SQL constructs > inside hive" are not for other systems. > > On Sat, Jan 31, 2015 at 2:38 PM, Koert Kuipers <ko...@tresata.com> wrote: > >> edward, >> i would not call "SQL constructs inside hive" accessible for other >> systems. its inside hive after all >> >> it is true that i can contact the metastore in java using >> HiveMetaStoreClient, but then i need to bring in a whole slew of >> dependencies (the miniumum seems to be hive-metastore, hive-common, >> hive-shims, libfb303, libthrift and a few hadoop dependencies, by trial and >> error). these jars need to be "provided" and added to the classpath on the >> cluster, unless someone is willing to build versions of an application for >> every hive version out there. and even when you do all this you can only >> pray its going to be compatible with the next hive version, since backwards >> compatibility is... well lets just say lacking. the attitude seems to be >> that hive does not have a java api, so there is nothing that needs to be >> stable. >> >> you are right i could go the pure thrift road. i havent tried that yet. >> that might just be the best option. but how easy is it to do this with a >> secure hadoop/hive ecosystem? now i need to handle kerberos myself and >> somehow pass tokens into thrift i assume? >> >> contrast all of this with an avro file on hadoop with metadata baked in, >> and i think its safe to say hive metadata is not easily accessible. >> >> i will take a look at your book. i hope it has an example of using thrift >> on a secure cluster to contact hive metastore (without using the >> HiveMetaStoreClient), that would be awesome. >> >> >> >> >> On Sat, Jan 31, 2015 at 1:32 PM, Edward Capriolo <edlinuxg...@gmail.com> >> wrote: >> >>> "with the metadata in a special metadata store (not on hdfs), and its >>> not as easy for all systems to access hive metadata." I disagree. >>> >>> Hives metadata is not only accessible through the SQL constructs like >>> "describe table". But the entire meta-store also is actually a thrift >>> service so you have programmatic access to determine things like what >>> columns are in a table etc. Thrift creates RPC clients for almost every >>> major language. >>> >>> In the programming hive book >>> http://www.amazon.com/dp/1449319335/?tag=mh0b-20&hvadid=3521269638&ref=pd_sl_4yiryvbf8k_e >>> there is even examples where I show how to iterate all the tables inside >>> the database from a java client. >>> >>> On Sat, Jan 31, 2015 at 11:05 AM, Koert Kuipers <ko...@tresata.com> >>> wrote: >>> >>>> yes you can run whatever you like with the data in hdfs. keep in mind >>>> that hive makes this general access pattern just a little harder, since >>>> hive has a tendency to store data and metadata separately, with the >>>> metadata in a special metadata store (not on hdfs), and its not as easy for >>>> all systems to access hive metadata. >>>> >>>> i am not familiar at all with tajo or drill. >>>> >>>> On Fri, Jan 30, 2015 at 8:27 PM, Samuel Marks <samuelma...@gmail.com> >>>> wrote: >>>> >>>>> Thanks for the advice >>>>> >>>>> Koert: when everything is in the same essential data-store (HDFS), >>>>> can't I just run whatever complex tools I'm whichever paradigm they like? >>>>> >>>>> E.g.: GraphX, Mahout &etc. >>>>> >>>>> Also, what about Tajo or Drill? >>>>> >>>>> Best, >>>>> >>>>> Samuel Marks >>>>> http://linkedin.com/in/samuelmarks >>>>> >>>>> PS: Spark-SQL is read-only IIRC, right? >>>>> On 31 Jan 2015 03:39, "Koert Kuipers" <ko...@tresata.com> wrote: >>>>> >>>>>> since you require high-powered analytics, and i assume you want to >>>>>> stay sane while doing so, you require the ability to "drop out of sql" >>>>>> when >>>>>> needed. so spark-sql and lingual would be my choices. >>>>>> >>>>>> low latency indicates phoenix or spark-sql to me. >>>>>> >>>>>> so i would say spark-sql >>>>>> >>>>>> On Fri, Jan 30, 2015 at 7:56 AM, Samuel Marks <samuelma...@gmail.com> >>>>>> wrote: >>>>>> >>>>>>> HAWQ is pretty nifty due to its full SQL compliance (ANSI 92) and >>>>>>> exposing both JDBC and ODBC interfaces. However, although Pivotal does >>>>>>> open-source >>>>>>> a lot of software <http://www.pivotal.io/oss>, I don't believe they >>>>>>> open source Pivotal HD: HAWQ. >>>>>>> >>>>>>> So that doesn't meet my requirements. I should note that the project >>>>>>> I am building will also be open-source, which heightens the importance >>>>>>> of >>>>>>> having all components also being open-source. >>>>>>> >>>>>>> Cheers, >>>>>>> >>>>>>> Samuel Marks >>>>>>> http://linkedin.com/in/samuelmarks >>>>>>> >>>>>>> On Fri, Jan 30, 2015 at 11:35 PM, Siddharth Tiwari < >>>>>>> siddharth.tiw...@live.com> wrote: >>>>>>> >>>>>>>> Have you looked at HAWQ from Pivotal ? >>>>>>>> >>>>>>>> Sent from my iPhone >>>>>>>> >>>>>>>> On Jan 30, 2015, at 4:27 AM, Samuel Marks <samuelma...@gmail.com> >>>>>>>> wrote: >>>>>>>> >>>>>>>> Since Hadoop <https://hive.apache.org> came out, there have been >>>>>>>> various commercial and/or open-source attempts to expose some >>>>>>>> compatibility >>>>>>>> with SQL <http://drill.apache.org>. Obviously by posting here I am >>>>>>>> not expecting an unbiased answer. >>>>>>>> >>>>>>>> Seeking an SQL-on-Hadoop offering which provides: low-latency >>>>>>>> querying, and supports the most common CRUD >>>>>>>> <https://spark.apache.org>, including [the basics!] along these >>>>>>>> lines: CREATE TABLE, INSERT INTO, SELECT * FROM, UPDATE Table SET >>>>>>>> C1=2 WHERE, DELETE FROM, and DROP TABLE. Transactional support >>>>>>>> would be nice also, but is not a must-have. >>>>>>>> >>>>>>>> Essentially I want a full replacement for the more traditional >>>>>>>> RDBMS, one which can scale from 1 node to a serious Hadoop cluster. >>>>>>>> >>>>>>>> Python is my language of choice for interfacing, however there does >>>>>>>> seem to be a Python JDBC wrapper <https://spark.apache.org/sql>. >>>>>>>> >>>>>>>> Here is what I've found thus far: >>>>>>>> >>>>>>>> - Apache Hive <https://hive.apache.org> (SQL-like, with >>>>>>>> interactive SQL thanks to the Stinger initiative) >>>>>>>> - Apache Drill <http://drill.apache.org> (ANSI SQL support) >>>>>>>> - Apache Spark <https://spark.apache.org> (Spark SQL >>>>>>>> <https://spark.apache.org/sql>, queries only, add data via >>>>>>>> Hive, RDD >>>>>>>> >>>>>>>> <https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.sql.SchemaRDD> >>>>>>>> or Paraquet <http://parquet.io/>) >>>>>>>> - Apache Phoenix <http://phoenix.apache.org> (built atop Apache >>>>>>>> HBase <http://hbase.apache.org>, lacks full transaction >>>>>>>> <http://en.wikipedia.org/wiki/Database_transaction> support, >>>>>>>> relational >>>>>>>> operators <http://en.wikipedia.org/wiki/Relational_operators> >>>>>>>> and some built-in functions) >>>>>>>> - Cloudera Impala >>>>>>>> >>>>>>>> <http://www.cloudera.com/content/cloudera/en/products-and-services/cdh/impala.html> >>>>>>>> (significant HiveQL support, some SQL language support, no support >>>>>>>> for >>>>>>>> indexes on its tables, importantly missing DELETE, UPDATE and >>>>>>>> INTERSECT; >>>>>>>> amongst others) >>>>>>>> - Presto <https://github.com/facebook/presto> from Facebook >>>>>>>> (can query Hive, Cassandra <http://cassandra.apache.org>, >>>>>>>> relational DBs &etc. Doesn't seem to be designed for low-latency >>>>>>>> responses >>>>>>>> across small clusters, or support UPDATE operations. It is >>>>>>>> optimized for data warehousing or analytics¹ >>>>>>>> <http://prestodb.io/docs/current/overview/use-cases.html>) >>>>>>>> - SQL-Hadoop <https://www.mapr.com/why-hadoop/sql-hadoop> via MapR >>>>>>>> community edition >>>>>>>> <https://www.mapr.com/products/hadoop-download> (seems to be a >>>>>>>> packaging of Hive, HP Vertica >>>>>>>> <http://www.vertica.com/hp-vertica-products/sqlonhadoop>, >>>>>>>> SparkSQL, Drill and a native ODBC wrapper >>>>>>>> <http://package.mapr.com/tools/MapR-ODBC/MapR_ODBC>) >>>>>>>> - Apache Kylin <http://www.kylin.io> from Ebay (provides an SQL >>>>>>>> interface and multi-dimensional analysis [OLAP >>>>>>>> <http://en.wikipedia.org/wiki/OLAP>], "… offers ANSI SQL on >>>>>>>> Hadoop and supports most ANSI SQL query functions". It depends on >>>>>>>> HDFS, >>>>>>>> MapReduce, Hive and HBase; and seems targeted at very large >>>>>>>> data-sets >>>>>>>> though maintains low query latency) >>>>>>>> - Apache Tajo <http://tajo.apache.org> (ANSI/ISO SQL standard >>>>>>>> compliance with JDBC <http://en.wikipedia.org/wiki/JDBC> driver >>>>>>>> support [benchmarks against Hive and Impala >>>>>>>> >>>>>>>> <http://blogs.gartner.com/nick-heudecker/apache-tajo-enters-the-sql-on-hadoop-space> >>>>>>>> ]) >>>>>>>> - Cascading >>>>>>>> <http://en.wikipedia.org/wiki/Cascading_%28software%29>'s >>>>>>>> Lingual <http://docs.cascading.org/lingual/1.0/>² >>>>>>>> <http://docs.cascading.org/lingual/1.0/#sql-support> ("Lingual >>>>>>>> provides JDBC Drivers, a SQL command shell, and a catalog manager >>>>>>>> for >>>>>>>> publishing files [or any resource] as schemas and tables.") >>>>>>>> >>>>>>>> Which—from this list or elsewhere—would you recommend, and why? >>>>>>>> Thanks for all suggestions, >>>>>>>> >>>>>>>> Samuel Marks >>>>>>>> http://linkedin.com/in/samuelmarks >>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>> >>> >> >