From a9b255ac9ef18e20020e2fa13212ef845f446aab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Sch=C3=A4fer?= Date: Tue, 16 May 2017 17:41:22 +0200 Subject: [PATCH 1/2] Update RImpala.java Fixed error with NULL values --- java/src/main/java/com/musigma/ird/bigdata/RImpala.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/src/main/java/com/musigma/ird/bigdata/RImpala.java b/java/src/main/java/com/musigma/ird/bigdata/RImpala.java index 33f6445..9c9bd6a 100755 --- a/java/src/main/java/com/musigma/ird/bigdata/RImpala.java +++ b/java/src/main/java/com/musigma/ird/bigdata/RImpala.java @@ -356,8 +356,8 @@ public static List < String[] > query(String Q, String isDDL, String fetchSize) String[] dynamicRow = new String[columnCount]; for (int i = 1; i <= columnCount; i++) { - - dynamicRow[i - 1] = rs.getObject(i).toString(); + Object o = rs.getObject(i); + dynamicRow[i - 1] = o == null ? null : o.toString(); } dynamicResult.add(dynamicRow); From baebcb0b2281d24d8dad04bfefee0059676a71f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Sch=C3=A4fer?= Date: Tue, 16 May 2017 18:23:28 +0200 Subject: [PATCH 2/2] Fixed build scripts/NULL return values --- build-package.sh | 4 +- java/README.md | 22 - java/pom.xml | 159 ------- .../java/com/musigma/ird/bigdata/RImpala.java | 393 ------------------ src/inst/java/RImpala-2.0.jar | Bin 6810 -> 6877 bytes src/java/build.sh | 2 +- .../java/com/musigma/ird/bigdata/RImpala.java | 4 +- .../com/musigma/ird/bigdata/RImpala.class | Bin 0 -> 8237 bytes .../java/target/classes}/log4j.properties | 0 src/java/target/maven-archiver/pom.properties | 5 + 10 files changed, 10 insertions(+), 579 deletions(-) delete mode 100755 java/README.md delete mode 100755 java/pom.xml delete mode 100755 java/src/main/java/com/musigma/ird/bigdata/RImpala.java mode change 100755 => 100644 src/inst/java/RImpala-2.0.jar create mode 100644 src/java/target/classes/com/musigma/ird/bigdata/RImpala.class rename {java/src/main/resources => src/java/target/classes}/log4j.properties (100%) mode change 100755 => 100644 create mode 100644 src/java/target/maven-archiver/pom.properties diff --git a/build-package.sh b/build-package.sh index ed8f3a7..e766a9f 100755 --- a/build-package.sh +++ b/build-package.sh @@ -1,6 +1,6 @@ #This script builds the jar by calling build.sh in RImpala/java #and then builds the RImpala package -cd java +cd src/java ./build.sh -cd .. +cd ../.. R CMD build src diff --git a/java/README.md b/java/README.md deleted file mode 100755 index ecd89d0..0000000 --- a/java/README.md +++ /dev/null @@ -1,22 +0,0 @@ -###RImpala - JDBC connection jar - -This java project creates the JDBC connection jar for the RImpala package. -This project is based on the [Cloudera-Impala-JDBC-Example](https://github.com/onefoursix/Cloudera-Impala-JDBC-Example) - -Here are links to more information on Cloudera Impala: - -- [Cloudera Enterprise RTQ](http://www.cloudera.com/content/cloudera/en/products/cloudera-enterprise-core/cloudera-enterprise-RTQ.html) - -- [Cloudera Impala Documentation](http://www.cloudera.com/content/support/en/documentation/cloudera-impala/cloudera-impala-documentation-v1-latest.html) - -- [Cloudera Impala JDBC Documentation](http://www.cloudera.com/content/cloudera-content/cloudera-docs/Impala/latest/Installing-and-Using-Impala/ciiu_impala_jdbc.html) - -- [Impala-User Google Group](https://groups.google.com/a/cloudera.org/forum/?fromgroups#!forum/impala-user) - - - -####Dependencies -To build the project you must have Maven 2.x or higher installed. Maven info is [here](http://maven.apache.org). - -To run the project you must have access to a Hadoop cluster running Cloudera Impala with at least one populated table defined in the Hive Metastore. - diff --git a/java/pom.xml b/java/pom.xml deleted file mode 100755 index 17ab9ca..0000000 --- a/java/pom.xml +++ /dev/null @@ -1,159 +0,0 @@ - - - 4.0.0 - com.musigma.ird.bigdata - RImpala - 2.0 - jar - - - UTF-8 - UTF-8 - - - - - - commons-logging - commons-logging - 1.1.3 - - - - org.apache.hive - hive-jdbc - 0.12.0-cdh5.1.0 - - - - org.apache.hadoop - hadoop-common - 2.3.0-cdh5.1.0 - - - - org.apache.hive - hive-metastore - 0.12.0-cdh5.1.0 - - - - org.apache.hive - hive-service - 0.12.0-cdh5.1.0 - - - - org.apache.thrift - libfb303 - 0.9.0 - - - - org.apache.thrift - libthrift - 0.9.0.cloudera.2 - - - - log4j - log4j - 1.2.16 - - - - org.slf4j - slf4j-api - 1.7.5 - - - - org.slf4j - slf4j-log4j12 - 1.7.5 - - - - - - - - - - org.codehaus.mojo - exec-maven-plugin - 1.2.1 - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.3.2 - - 1.6 - 1.6 - - - - org.apache.maven.plugins - maven-jar-plugin - 2.4 - - ${basedir} - - - - maven-assembly-plugin - - - - com.musigma.ird.bigdata.RImpala - - - - jar-with-dependencies - - - - - - - - - - cdh.repo - https://repository.cloudera.com/artifactory/cloudera-repos - Cloudera Repositories - - false - - - - cdh.snapshots.repo - https://repository.cloudera.com/artifactory/libs-snapshot-local - Cloudera Snapshots Repository - - true - - - false - - - - central - http://repo1.maven.org/maven2/ - - true - - - false - - - - - diff --git a/java/src/main/java/com/musigma/ird/bigdata/RImpala.java b/java/src/main/java/com/musigma/ird/bigdata/RImpala.java deleted file mode 100755 index 9c9bd6a..0000000 --- a/java/src/main/java/com/musigma/ird/bigdata/RImpala.java +++ /dev/null @@ -1,393 +0,0 @@ -package com.musigma.ird.bigdata; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.ResultSet; -import java.sql.ResultSetMetaData; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; -import java.util.List; - -public class RImpala { - - - private static String CONNECTION_URL; - - private static final String JDBC_DRIVER_NAME = "org.apache.hive.jdbc.HiveDriver"; - - private static Connection con = null; - - public static void main(String[] args) { - - - } - - - public static boolean connect(String IP, String port, String principal) { - - CONNECTION_URL = "jdbc:hive2://" + IP + ':' + port + "/;" + principal; - - try { - Class.forName(JDBC_DRIVER_NAME); - con = DriverManager.getConnection(CONNECTION_URL); - con.setAutoCommit(false); - return true; - - } catch (SQLException e) { - // TODO Auto-generated catch block - System.out.println("Error: " + e.getMessage()); - return false; - - } catch (ClassNotFoundException e) { - // TODO Auto-generated catch block - System.out.println("Error: " + e.getMessage()); - return false; - } - - } - - public static boolean close() { - try { - con.close(); - return true; - - } catch (SQLException e) { - // TODO Auto-generated catch block - System.out.println("Error: " + e.getMessage()); - return false; - } - } - - public static boolean refresh(String table) throws ClassNotFoundException { - - try { - Statement stmt; - stmt = con.createStatement(); - String Q = "refresh " + table; - //stmt.execute("connect "+ IP+":21000;"); - stmt.execute(Q); - return true; - - } catch (SQLException e) { - // TODO Auto-generated catch block - System.out.println("Error: " + e.getMessage()); - return false; - - } - } - - public static boolean invalidate(String table) throws ClassNotFoundException { - - try { - Statement stmt; - stmt = con.createStatement(); - String Q = "invalidate metadata " + table; - //stmt.execute("connect "+ IP+":21000;"); - stmt.execute(Q); - return true; - - } catch (SQLException e) { - // TODO Auto-generated catch block - System.out.println("Error: " + e.getMessage()); - return false; - - } - } - - public static List < String[] > showtables() throws SQLException { - Statement stmt; - String Q = "show tables"; - ResultSet rs = null; - - try { - stmt = con.createStatement(); - rs = stmt.executeQuery(Q); - List < String[] > dynamicResult = new ArrayList < String[] > (); - - ResultSetMetaData metaData = rs.getMetaData(); - - int columnCount = metaData.getColumnCount(); - - String[] columnNames = new String[columnCount]; - - for (int j = 1; j <= columnCount; j++) { - columnNames[j - 1] = metaData.getColumnName(j); - - } - dynamicResult.add(columnNames); - - while (rs.next()) { - - String[] dynamicRow = new String[columnCount]; - - for (int i = 1; i <= columnCount; i++) { - - dynamicRow[i - 1] = rs.getObject(i).toString(); - } - dynamicResult.add(dynamicRow); - - - } - return dynamicResult; - - } catch (SQLException e) { - // TODO Auto-generated catch block - System.out.println("Error: " + e.getMessage()); - } catch (Exception e) { - //e.printStackTrace(); - - if (!con.isValid(2)) { - System.out.println("Connection has probably not been established"); - System.out.println("Please use rimpala.connect(IP= ,port= )"); - } - - System.out.println("Error: " + e.getMessage()); - - } finally { - - } - return null; - - } - - public static List < String[] > showdatabases() throws SQLException { - Statement stmt; - String Q = "show databases"; - ResultSet rs = null; - - try { - stmt = con.createStatement(); - rs = stmt.executeQuery(Q); - List < String[] > dynamicResult = new ArrayList < String[] > (); - - ResultSetMetaData metaData = rs.getMetaData(); - - int columnCount = metaData.getColumnCount(); - - String[] columnNames = new String[columnCount]; - - for (int j = 1; j <= columnCount; j++) { - columnNames[j - 1] = metaData.getColumnName(j); - - } - dynamicResult.add(columnNames); - - while (rs.next()) { - - String[] dynamicRow = new String[columnCount]; - - for (int i = 1; i <= columnCount; i++) { - - dynamicRow[i - 1] = rs.getObject(i).toString(); - } - dynamicResult.add(dynamicRow); - - - } - return dynamicResult; - - } catch (SQLException e) { - // TODO Auto-generated catch block - System.out.println("Error: " + e.getMessage()); - } catch (Exception e) { - //e.printStackTrace(); - - if (!con.isValid(2)) { - System.out.println("Connection has probably not been established"); - System.out.println("Please use rimpala.connect(IP= ,port= )"); - } - - System.out.println("Error: " + e.getMessage()); - - } finally { - - } - return null; - - } - - - - public static boolean usedatabase(String db) { - Statement stmt; - String Q = "use" + " " + db; - try { - stmt = con.createStatement(); - stmt.execute(Q); - System.out.println("Database changed to " + db); - return true; - } catch (SQLException e) { - // TODO Auto-generated catch block - System.out.println("Error: " + e.getMessage()); - return false; - } - } - - public static List < String[] > describe(String table) throws SQLException { - Statement stmt; - String Q = "describe" + " " + table; - ResultSet rs = null; - try { - stmt = con.createStatement(); - rs = stmt.executeQuery(Q); - - List < String[] > dynamicResult = new ArrayList < String[] > (); - - ResultSetMetaData metaData = rs.getMetaData(); - - int columnCount = metaData.getColumnCount(); - - String[] columnNames = new String[columnCount]; - - for (int j = 1; j <= columnCount; j++) { - columnNames[j - 1] = metaData.getColumnName(j); - - } - dynamicResult.add(columnNames); - - while (rs.next()) { - - String[] dynamicRow = new String[columnCount]; - - for (int i = 1; i <= columnCount; i++) { - - dynamicRow[i - 1] = rs.getObject(i).toString(); - } - dynamicResult.add(dynamicRow); - - - } - return dynamicResult; - } catch (SQLException e) { - // TODO Auto-generated catch block - System.out.println("Error: " + e.getMessage()); - } catch (Exception e) { - //e.printStackTrace(); - - if (!con.isValid(2)) { - System.out.println("Connection has probably not been established"); - System.out.println("Please use rimpala.connect(IP= ,port= )"); - } - - System.out.println("Error: " + e.getMessage()); - - } finally { - - } - return null; - - } - - public static List < String[] > query(String Q, String isDDL, String fetchSize) throws SQLException { - - ResultSet rs = null; - - - if ("true".equals(isDDL)) { - List < String[] > updateResult = new ArrayList < String[] > (); - - String[] Result_array = new String[1]; - - String Result; - - try { - Statement stmt = con.createStatement(); - - stmt.executeUpdate(Q); - - Result = "true"; - - Result_array[0] = Result; - - updateResult.add(Result_array); - - return updateResult; - - } catch (SQLException e) { - - System.out.println("Error: " + e.getMessage()); - - } catch (Exception e) { - - if (!con.isValid(2)) { - System.out.println("Connection has probably not been established"); - System.out.println("Please use rphoenix.connect(IP= ,port= )"); - } - - System.out.println("Error: " + e.getMessage()); - } finally {} - - return null; - } else { - try { - - Statement stmt = con.createStatement(); - - stmt.setFetchSize(Integer.parseInt(fetchSize)); - - rs = stmt.executeQuery(Q); - - List < String[] > dynamicResult = new ArrayList < String[] > (); - - ResultSetMetaData metaData = rs.getMetaData(); - - int columnCount = metaData.getColumnCount(); - - - //System.out.println("Number of Columns :"+columnCount); - - - String[] columnTypes = new String[columnCount]; - String[] columnNames = new String[columnCount]; - for (int j = 1; j <= columnCount; j++) { - - //System.out.print(metaData.getColumnName(j)+"\t"); - columnNames[j - 1] = metaData.getColumnName(j); - columnTypes[j - 1] = metaData.getColumnTypeName(j); - } - - dynamicResult.add(columnNames); - dynamicResult.add(columnTypes); - - - while (rs.next()) { - - String[] dynamicRow = new String[columnCount]; - - for (int i = 1; i <= columnCount; i++) { - Object o = rs.getObject(i); - dynamicRow[i - 1] = o == null ? null : o.toString(); - } - dynamicResult.add(dynamicRow); - - - } - return dynamicResult; - - } catch (SQLException e) { - - System.out.println("Error: " + e.getMessage()); - - } catch (Exception e) { - //e.printStackTrace(); - - if (!con.isValid(2)) { - System.out.println("Connection has probably not been established"); - System.out.println("Please use rimpala.connect(IP= ,port= )"); - } - - System.out.println("Error: " + e.getMessage()); - - } finally { - - } - return null; - } - - - - } - - -} diff --git a/src/inst/java/RImpala-2.0.jar b/src/inst/java/RImpala-2.0.jar old mode 100755 new mode 100644 index 40e8319c517f5c23435d54804baac66ca96c77d6..2a63da514893c8d9a76b01d176566a8f5f6bd50c GIT binary patch delta 4691 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 Z^(FqDLw`^O!FTEY$tWf~a{B9q{{hF^XN&*< delta 4645 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 diff --git a/src/java/build.sh b/src/java/build.sh index 8862e80..9f1296e 100755 --- a/src/java/build.sh +++ b/src/java/build.sh @@ -1,2 +1,2 @@ -mvn clean install +mvn clean package mv RImpala-2.0.jar ../inst/java/RImpala-2.0.jar diff --git a/src/java/src/main/java/com/musigma/ird/bigdata/RImpala.java b/src/java/src/main/java/com/musigma/ird/bigdata/RImpala.java index 33f6445..9c9bd6a 100755 --- a/src/java/src/main/java/com/musigma/ird/bigdata/RImpala.java +++ b/src/java/src/main/java/com/musigma/ird/bigdata/RImpala.java @@ -356,8 +356,8 @@ public static List < String[] > query(String Q, String isDDL, String fetchSize) String[] dynamicRow = new String[columnCount]; for (int i = 1; i <= columnCount; i++) { - - dynamicRow[i - 1] = rs.getObject(i).toString(); + Object o = rs.getObject(i); + dynamicRow[i - 1] = o == null ? null : o.toString(); } dynamicResult.add(dynamicRow); diff --git a/src/java/target/classes/com/musigma/ird/bigdata/RImpala.class b/src/java/target/classes/com/musigma/ird/bigdata/RImpala.class new file mode 100644 index 0000000000000000000000000000000000000000..ec6aa63b5898907c16953ff73f21a95c27133c61 GIT binary patch literal 8237 zcmeHMeSBP1nSRdX&fGgQH)%;bfhqkMDy2!AG!`KxQ$X5$*tAJnntli@WN&6}lZlg= z>3sA9m91`BLA$W1=z`*^t(FC>r9fy3A}&SO4_tR$0V|990Vs;BEGkmP>~qe&Gnph) z;P(^%lm0U2-gD1+&-?Mb@AKZvxBhVKApqwJ1aJXv)bV!#cyObEo8ecP z=N}E+5yYLi%fOcm9Fmt`)^Rw1`M5ENyKy9ldvLFg`{Xzp#Qiubr^n>aF{$ItIv$XM z9yIV30}lmIj{^q2YT#i5Uo-Ge1|A7uA&yJQj~e)T0N=nr%bRaXiQm%kZGoD$^}W3v zZJWB*_x5kz*ey`oJ#6i;nv+&)u(>avO{4}_3d~&FzPhcyePh>_j*b1jt9m*Fs@u}3 zT;59Mw^+%7El?FprvyUI?%eidGoPpISU!wxpHI^``Tk=|U=AzR1(Hfu>~AS*qgCFb1&%?W528@>c9UJyu3J zhA1PZ1iZ0iIwvDgFOS!=_O`5@8)7Uf7$H|^x%>zP&o0w3Z{_U~JC&yg#if*(ccKv} zDMgryIyO=rdlo* z6_QJaaE~X;hh^56^A=C@S7mARm2|U&_<)s@CIt&QyLd}O;sXLk+|I?ai2=$zyHdcX=uI0d zfqQBIPoN!-$=lEa1EMz3OO1I8Mzm?5eJW-@4*QWIY z!%S7~cZ0r(v7(2(iClX-%b0(gosSLmC9bwrnY;2W()Uz;F)oZH-3k}zOBb>+yE7r{ zndz3MWwNN6cqcAlahO_QR~Hh=xSeIVhvNgW=ul#ZeQvb5*~Gu%-{jBt8S3VhCjK2i zFwu&rz=AiZgj|u%4lc7YR&2;#CIv2&qL;1VReP2{Ssjm?cmhxA_@Rjt_>qZ=aIuc3 zO#BC)X6`5*Wf?E8Upjtl;y>|UtTG+hY&si_nD}q}K*#@>cm~f3L?%qDT-;1-#w8}6 z!%v7@w^BuzH70(FcQY#|YD`4d0EzVoLoCxE;*=W`&*NvT;OZn*a8^lx$g0D_x@hkkgC~tDDF!39_BG5R&WRW2&7s+JP z1FVm`BdK&gGGN=Oh)p6KNG5VacAVM0A!##PBTUsuHlc`VnM*A7T^lZnG|IYuQKW&~ ztIR6qGr_CLJ@i7moAHs@5NX(sNAhV-`-_>*Yb~EG*d~4}jd&F&1?tOB%?zdORAN`f zV|Dz_#P4y^#B2D2iE;dLlAD~gVyaC5phynolTL237SoD}NXQ@v%qeXxttwXRNq*im zluhq+h{k7SGIom2YpRf^Zp|nwEN;Ru`RCTRz20LZpLXI-rxuHDnH&n3F@X?;SVDVS zIx87OV9^^Wqc%`RUCCf4w|cCUHK_7=(9TbQN1)-<0;hFM4!|c*OG2>os|xvaTY6+9 zL0@b2m&>-M9Ot`png-9GFNqZ(tjdr!#D8genK9S&yB|QO{ybCa<9%WaE)f z%BHT8+B|hejMDNpn-ZsckbRdM4OKac^E^+tciFLm>>Nz@>QaYD>MO~1ctgr4A&4@9 zO6Ou@Fu(k$(y}7ZxV%O=zpOi8f5d*Ix-{(sIaJ>@9YNe)WyOidNv6A$qk5>6y^HSk zQ&=%$rU)wWlb*=2MNUwd#-rGO`RwflE6H@Pc3rVq@!pif+}>NNeA)y?yHa^uLCeTk z*__Q=dX$*xEV7+*3WIZ6$xg|P(pH?M-fVy>j-(O3?99PRjsh3*+JhkH$pXAKIY+MI z?<(Fka}*rCOYVobTPR{AuLhD2#jHuMHlBx%CMAM^Swb zYL1|$Y78?x(C+Fzg42ppYPr5?6tkRdqnKS)>2Y1zV|u2ZrmW_hoE$B_#8vSQSVoTl z^Eeyf^;uZKm#s_iHa=TK+ZLmrPb@6K02*-(nv}ig(MfH5!|O&5r3|R6US82otXDCS zR~uAReK`z+LO6SWLf_TdbDL z_tlxMDRoo}I1dKS=j;j^)=C4Sr4R*Om7!E&!B&FiUQJ9UzI^;THakH2JO7$eUZtqd>~eYJDDMNctM>y|7X!#odq9>9Di+Jauj zC?XKm!rBs84IrLwd-&AK|bsq-*i87ShM?HV^vt>f+$|b4_927|v#N zDPWP{caaO6jk?xigbcay%&;CZw0L947{fUpjAC)$UV~eoX$n)4+*v2Vq40VgFafVOB6NK8yXtm>eIW z=jAv~zwgJxYJ7yPlDr=mLXDbA{A;j)b8&jr=8hrMAb~mz6J<%9gA@y91}(_48047B zStjZZ7K2?}c{S2_A9k}Ge1zjoOz>Or*SHOPdE(#T0IuV?H&c`AaUA>bJ^U@6#0_k@ zZ=xPIQ-hBQ4WCfRxS9o_l^C~JM0B3905M(}l)sdkb#ZP!uBCq4sO33$KL&ZaM$Pin zb%0v8V1ycX(FZk@EHef?f391Yj`Qnz1--m1Q+%7>)7#o%;oPmbuWLk zQ!AzDOuA8W)o!Nh)fIr<^k-oI(ZK#RoqwB3g&KU0!2UeLaeyHDBH?p8fpZ6eeJ6o^ z2Z4Qvz&=c99U<`UWmHB9?0X5Cj}zFB64+lSu)j%Q zKSp4Go523=pMmWF`@LiWr+a#aq0k8U{$e>>Rz^L=0^VI@)v~hJJh6^7?+sfZ9yeQc zd_}rl$Wj74&eFBHM~wVaq>`tZk3TLE)I9b)4&|;QQk>3)Dzm^zqMc20 zc4$}@iCGZi6jH^!m$|PJpQ-$QRz!!Ro~6BPtHgq$#c!Xmq({iAKL*)dNSjGoy)J1* zwI+wPykW9}WG!FFCt1rSAD?6`MLuD#WFN&^l6syCYenv%1Vvk|&Q3#X@rV2&?mRPW zg#22(DdeA^Ex)8K?xie;w~mLks1Y^}N42srNcIV{ah+&w4x&@8c+=b^cTXm-Ksex# zR~_zSp3P*2-pAG}y;%{S3zgq=Q4u+Pj4pM}-f^gu!z| zI3fIaO7Me@sOGnY8vItAMm?yBm?h?kI)$3Os3s~L@-j$M4te=0zfqBwL2a&6GDDu*|^A;C-$0$!?Pa{HG6?rjn!~(b7n=OJa3hSt!q_L_JjX7tf zxl85tqyYiOV7=^{Jrb zyVGP)az$lOo;SUr3Ul{lP&yq|Nh$V@jYo0*7+O3CYt*kiRlRPi`eeT-Q2@<=K2;Q0MvZ=IGz5i4<>xENpH{FlTkp4@>k@h%(}U3g5a!{efdpOe?~bMIz;kKMvAty|ek zUoK{dE5rh^RV)%$iDuC+TE&1^E#mwiM%zT67!+5EA(7?vE-@@VC`QD!B1LO5;s(y% zDfWm%A}mqZg?;IVlO|gHmUA9Ag<(_;kE3~P0`H)CHw3k?Q2z~Du6M3 zU!9?mE=N_-@{%AAsiNh>PZ%rNaqD=IW%EOnY~a`Uq$*#2aYM0aG42yZ>t$7{7$Wg9 z%b@%~Bd@OKm50%KsjPg}amLYImM`c0G<9bo6SFaEoRIOULdJf))RGrU73wt}@0O@j zEZeEQDj9nXf|JFtFczEpVt?N_%dLvztjg7|w_NVf@nLx6#W)pzQ>&|-ZQEak?<7h^ yw|LH}%I>7+6$|AINSuCap7b^U^9p`JlApSSN)_i*7kd}Jkjb}?8~z{qRa?XW literal 0 HcmV?d00001 diff --git a/java/src/main/resources/log4j.properties b/src/java/target/classes/log4j.properties old mode 100755 new mode 100644 similarity index 100% rename from java/src/main/resources/log4j.properties rename to src/java/target/classes/log4j.properties diff --git a/src/java/target/maven-archiver/pom.properties b/src/java/target/maven-archiver/pom.properties new file mode 100644 index 0000000..d9488f1 --- /dev/null +++ b/src/java/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Tue May 16 18:20:46 CEST 2017 +version=2.0 +groupId=com.musigma.ird.bigdata +artifactId=RImpala