From 8a5d892f3b9020ed847eab63a39b6ad894752b54 Mon Sep 17 00:00:00 2001 From: deshanxiao Date: Fri, 28 Oct 2022 20:02:09 +0800 Subject: [PATCH 01/13] update --- java/.my-compression.orc.crc | Bin 0 -> 356 bytes java/.my-file.orc.crc | Bin 0 -> 220 bytes .../orc/examples/CompressionWriter.java | 52 +++++++++++++++ .../java/org/apache/orc/examples/Driver.java | 43 ++++++++---- .../orc/examples/InMemoryCryptionReader.java | 48 +++++++++++++ .../orc/examples/InMemoryCryptionWriter.java | 63 ++++++++++++++++++ ...pache.hadoop.crypto.key.KeyProviderFactory | 18 +++++ java/my-compression.orc | Bin 0 -> 44199 bytes java/my-file.orc | Bin 0 -> 26660 bytes 9 files changed, 212 insertions(+), 12 deletions(-) create mode 100644 java/.my-compression.orc.crc create mode 100644 java/.my-file.orc.crc create mode 100644 java/examples/src/java/org/apache/orc/examples/CompressionWriter.java create mode 100644 java/examples/src/java/org/apache/orc/examples/InMemoryCryptionReader.java create mode 100644 java/examples/src/java/org/apache/orc/examples/InMemoryCryptionWriter.java create mode 100644 java/examples/src/resources/org.apache.hadoop.crypto.key.KeyProviderFactory create mode 100644 java/my-compression.orc create mode 100644 java/my-file.orc diff --git a/java/.my-compression.orc.crc b/java/.my-compression.orc.crc new file mode 100644 index 0000000000000000000000000000000000000000..31a3efe55de8c5bf8e9b9a69b18cc38f5c39532b GIT binary patch literal 356 zcmV-q0h|6~a$^7h00IC8_gO%Eb8rTD#5MQw7nOs!`9uB{%Q=YKG}fWbS=Bf?UJ|jL z$%Nyl^ss90NC##NYhF^~|6=)hJEs(qxqlA69H@8ER3rm!XVCiW zAjN@<3bK0(S&ska_m}hPp%G~*!O|U)xE&+fqLfx}-=^?f&(lnnoY)guqFPs_eqvuH z6F`Qwwto+L4Zj3izBdDJaNV&}8x6K2r}@|u{p-lP8^{j>8(ddOe|RG&k`|<({q)X1 zztH-?cA@LEPd2333Px(q5?nP%p2&cl;0>Xld4z-`8jnq*D=dpbn&CTjA{QX-_Q(t*kC+K-o|w=T+LVK|p~()`@6f z9w@j6_-j*OFq*&F6l$I&DlU*$Ixx7deA{S%tNdI?X*om`3AP`3k*Swb-$Cw%1}BRc C>Zwft literal 0 HcmV?d00001 diff --git a/java/.my-file.orc.crc b/java/.my-file.orc.crc new file mode 100644 index 0000000000000000000000000000000000000000..67e857f8aa4c3734a2144b3c5bb78605af89c35c GIT binary patch literal 220 zcmV<203-ina$^7h00ID-9^Kv(JqNM1ifJy;Bd1gF$0}-9LTxK01}jo$1m~L#DXUYk z+iWYR8eJ)zzQ-|LbZI#A-7(Ltb0omcT;`hnQ9FE{E+RMP6L^q=!o}N-a>A)9U|X W78_8t>d7!}IO8Bzf_SVy*!w4DOl9r> literal 0 HcmV?d00001 diff --git a/java/examples/src/java/org/apache/orc/examples/CompressionWriter.java b/java/examples/src/java/org/apache/orc/examples/CompressionWriter.java new file mode 100644 index 0000000000..dfcf0a332a --- /dev/null +++ b/java/examples/src/java/org/apache/orc/examples/CompressionWriter.java @@ -0,0 +1,52 @@ +package org.apache.orc.examples; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector; +import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; +import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import org.apache.orc.CompressionKind; +import org.apache.orc.OrcFile; +import org.apache.orc.TypeDescription; +import org.apache.orc.Writer; +import org.apache.orc.impl.CryptoUtils; +import org.apache.orc.impl.KeyProvider; + +import java.io.IOException; +import java.util.Random; + +public class CompressionWriter { + public static void main(Configuration conf, String[] args) throws IOException { + TypeDescription schema = + TypeDescription.fromString("struct"); + Writer snappyWriter = OrcFile.createWriter(new Path("my-compression.orc"), + OrcFile.writerOptions(conf) + .setSchema(schema) + // set compress kind to snappy. Now we have much compression + // method such as ZLIB, SNAPPY, LZO, LZ4, ZSTD. + .compress(CompressionKind.SNAPPY)); + + VectorizedRowBatch batch = schema.createRowBatch(); + LongColumnVector x = (LongColumnVector) batch.cols[0]; + BytesColumnVector y = (BytesColumnVector) batch.cols[1]; + for (int r = 0; r < 10000; ++r) { + int row = batch.size++; + x.vector[row] = r; + byte[] buffer = ("byte-" + r).getBytes(); + y.setRef(row, buffer, 0, buffer.length); + // If the batch is full, write it out and start over. + if (batch.size == batch.getMaxSize()) { + snappyWriter.addRowBatch(batch); + batch.reset(); + } + } + if (batch.size != 0) { + snappyWriter.addRowBatch(batch); + } + snappyWriter.close(); + } + + public static void main(String[] args) throws IOException { + main(new Configuration(), args); + } +} diff --git a/java/examples/src/java/org/apache/orc/examples/Driver.java b/java/examples/src/java/org/apache/orc/examples/Driver.java index 7d13a1f410..42ccf0c6c9 100644 --- a/java/examples/src/java/org/apache/orc/examples/Driver.java +++ b/java/examples/src/java/org/apache/orc/examples/Driver.java @@ -24,11 +24,35 @@ import org.apache.commons.cli.ParseException; import org.apache.hadoop.conf.Configuration; +import java.util.HashMap; +import java.util.Map; + /** * Driver program for the java ORC examples. */ public class Driver { + private static final Map exampleMaps = new HashMap<>(); + + static { + exampleMaps.put("write", new ExampleInfo("write a sample ORC file", CoreReader.class)); + exampleMaps.put("read", new ExampleInfo("read a sample ORC file", CoreWriter.class)); + exampleMaps.put("write2", new ExampleInfo("write a sample ORC file with a map", AdvancedWriter.class)); + exampleMaps.put("read2", new ExampleInfo("read a sample ORC file with a map", AdvancedReader.class)); + exampleMaps.put("compressWriter", new ExampleInfo("write a ORC file with snappy compression", CompressionWriter.class)); + exampleMaps.put("cryptionWriter", new ExampleInfo("write a ORC file with cryption", InMemoryCryptionWriter.class)); + } + + static class ExampleInfo { + final String exampleDescription; + final Class exampleClass; + + public ExampleInfo(String exampleDescription, Class exampleClass) { + this.exampleDescription = exampleDescription; + this.exampleClass = exampleClass; + } + } + @SuppressWarnings("static-access") static Options createOptions() { Options result = new Options(); @@ -71,10 +95,9 @@ public static void main(String[] args) throws Exception { " [--define X=Y] "); System.err.println(); System.err.println("Commands:"); - System.err.println(" write - write a sample ORC file"); - System.err.println(" read - read a sample ORC file"); - System.err.println(" write2 - write a sample ORC file with a map"); - System.err.println(" read2 - read a sample ORC file with a map"); + for (Map.Entry entries: exampleMaps.entrySet()) { + System.err.printf(" %s - %s%n", entries.getKey(), entries.getValue().exampleDescription); + } System.err.println(); System.err.println("To get more help, provide -h to the command"); System.exit(1); @@ -87,14 +110,10 @@ public static void main(String[] args) throws Exception { conf.set(parts[0], parts[1]); } } - if ("read".equals(options.command)) { - CoreReader.main(conf, options.commandArgs); - } else if ("write".equals(options.command)) { - CoreWriter.main(conf, options.commandArgs); - } else if ("write2".equals(options.command)) { - AdvancedWriter.main(conf, options.commandArgs); - } else if ("read2".equals(options.command)) { - AdvancedReader.main(conf, options.commandArgs); + if (exampleMaps.containsKey(options.command)) { + Class exampleClass = exampleMaps.get(options.command).exampleClass; + exampleClass.getDeclaredMethod("main", Configuration.class, String[].class) + .invoke(null, conf, options.commandArgs); } else { System.err.println("Unknown subcommand: " + options.command); System.exit(1); diff --git a/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionReader.java b/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionReader.java new file mode 100644 index 0000000000..21e98c3b02 --- /dev/null +++ b/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionReader.java @@ -0,0 +1,48 @@ +package org.apache.orc.examples; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector; +import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; +import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import org.apache.orc.*; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +public class InMemoryCryptionReader { + public static void main(Configuration conf, String[] args) throws IOException { + // the kmsKey used to read encryption data. + byte[] kmsKey = "secret123".getBytes(StandardCharsets.UTF_8); + // InMemoryKeystore is used to get key to read encryption data. + InMemoryKeystore keyProvider = new InMemoryKeystore() + .addKey("pii", EncryptionAlgorithm.AES_CTR_128, kmsKey); + Reader reader = OrcFile.createReader(new Path("my-cryption.orc"), + OrcFile.readerOptions(conf) + // Configure the keyProvider + .setKeyProvider(keyProvider)); + System.out.println("File schema: " + reader.getSchema()); + System.out.println("Row count: " + reader.getNumberOfRows()); + + // Pick the schema we want to read using schema evolution + TypeDescription schema = + TypeDescription.fromString("struct"); + // Read the encryption data + VectorizedRowBatch batch = schema.createRowBatch(); + RecordReader rowIterator = reader.rows(reader.options() + .schema(schema)); + LongColumnVector x = (LongColumnVector) batch.cols[0]; + BytesColumnVector y = (BytesColumnVector) batch.cols[1]; + while (rowIterator.nextBatch(batch)) { + for(int row=0; row < batch.size; ++row) { + System.out.println("x: " + x.vector[row]); + System.out.println("y: " + y.toString(row)); + } + } + rowIterator.close(); + } + + public static void main(String[] args) throws IOException { + main(new Configuration(), args); + } +} diff --git a/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionWriter.java b/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionWriter.java new file mode 100644 index 0000000000..652d381379 --- /dev/null +++ b/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionWriter.java @@ -0,0 +1,63 @@ +package org.apache.orc.examples; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector; +import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; +import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import org.apache.orc.*; +import org.apache.orc.impl.HadoopShimsFactory; +import org.apache.orc.impl.KeyProvider; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.Random; + +public class InMemoryCryptionWriter { + public static void main(Configuration conf, String[] args) throws IOException { + conf.set("hadoop.security.key.provider.path", "test:///"); + conf.set("orc.key.providerh", "hadoop"); + conf.set("orc.encrypt", "pii:ssn,email"); + KeyProvider provider = HadoopShimsFactory.get().getHadoopKeyProvider(conf, new Random()); + + TypeDescription schema = + TypeDescription.fromString("struct"); + // the kmsKey used to encrypt data. + byte[] kmsKey = "secret123".getBytes(StandardCharsets.UTF_8); + // The primary use of InMemoryKeystore is for used who doesn't have a + // Hadoop KMS. + InMemoryKeystore keyProvider = new InMemoryKeystore() + .addKey("pii", EncryptionAlgorithm.AES_CTR_128, kmsKey); + // "encryption" used to specify columns and kmsKey which will be encrypted + String encryption = "pii:x,y"; + Writer writer = OrcFile.createWriter(new Path("my-cryption.orc"), + OrcFile.writerOptions(conf) + .setSchema(schema) + // Configure the keyProvider + .setKeyProvider(keyProvider) + .encrypt(encryption)); + + VectorizedRowBatch batch = schema.createRowBatch(); + LongColumnVector x = (LongColumnVector) batch.cols[0]; + BytesColumnVector y = (BytesColumnVector) batch.cols[1]; + for (int r = 0; r < 10000; ++r) { + int row = batch.size++; + x.vector[row] = r; + byte[] buffer = ("2byte-" + r).getBytes(); + y.setRef(row, buffer, 0, buffer.length); + // If the batch is full, write it out and start over. + if (batch.size == batch.getMaxSize()) { + writer.addRowBatch(batch); + batch.reset(); + } + } + if (batch.size != 0) { + writer.addRowBatch(batch); + } + writer.close(); + } + + public static void main(String[] args) throws IOException { + main(new Configuration(), args); + } +} diff --git a/java/examples/src/resources/org.apache.hadoop.crypto.key.KeyProviderFactory b/java/examples/src/resources/org.apache.hadoop.crypto.key.KeyProviderFactory new file mode 100644 index 0000000000..246058e0be --- /dev/null +++ b/java/examples/src/resources/org.apache.hadoop.crypto.key.KeyProviderFactory @@ -0,0 +1,18 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +test.org.apache.spark.sql.execution.datasources.orc.FakeKeyProvider$Factory diff --git a/java/my-compression.orc b/java/my-compression.orc new file mode 100644 index 0000000000000000000000000000000000000000..a93f76216acf286a59781921d6863a94ed8d8c89 GIT binary patch literal 44199 zcmeHQ36x}2k^NQuo6ah_o9+UNrp3%AQNRVL%B&TYRT-QSXcienR74RF8$?lI+z>sk z=s^Y@W`=QQJfn`vYTpr~w)iu-~BilE}k+=zJbBi{S}=hAj@T5ZmGk?-BO zvAlTyXI4i2YK}VQ&>gdEe8t4_#>Gc&%;quQb$nTtWfKzsCbn;6YuONBwWBj^^|JL1e`}oG}Jy~|zZdc!zjb44<1&xvA z*&2*>7#lG5#+brbz&HrwaEy%@Ct#e6aXQAcG0q!Vo?kFBvfaX~N65{^kULy(*~sWI zk01Hq`^rPzKZcRjIU$dit!DMZ(@84V%&!DBa9zo z+>UVv#+?{H!T2f0T^K*ZxEtdhjGtrt0^^q$_hS4C}VeE`CiLndDI*eU0 z)?+*XV>gTkVl**Y7#p(Awy{;!po{a^HnyG`%-}q>jjg8!vpA1!W9zBG9L{6g*m`O( zkMr0zww@X+;5@dCt)~WyIFD^(tEmCL*lpUKM4QAOBpyWK!6f!1u@{NGNj!waLrFZ0 z#KTGKLt?ZmSyNSNTZldq7o9H|2Ci)J$X(NfFNgPAs zSQ5vPcsz;YN&Gd56G%LP#EB%HNa7?CPa^ST5>FvIEBR1NIadysU)63;xrPc zlQ@IKGfA9D;#nj%kvNOQ*(9D#;v5psA@N)i=aP6HiRY7e0g3ZSoKNC!NW755i%7hf z#7juLl*9!jUPj_V5-*21=N0X@wc2mTx6gB4L8JZ7R{LGH`j6J0|Jf3aGWLA01NMAB z7VQtT+8=DSKg4G3kF?rXw%S+8;_6oWW3BebTkTJ@+MhJHpKi53W2%S*t9?tW{T0K$)@pyB;T0E1) znIxV?0v|Ke&9g|H4OSN^V>F*bz;hk&d;(rT;ye=PJJpK_c(DU6AmC*NkjJXgd@T`Q zXT;_kY|d$1BJ1X*M0}Geo0r*~iI?lTdC_?DpLJ0kR#GA2I|m`6=b

ON5G)JMrX#OZ!->F>XkY}CKtE`*%4#*qDr>NR2r@8rRj@i1o za(5)UN`U4Lrl8=>9c|s5B;qaxNOt8cn;VF@I}u6QT(i3QAVMDOk-Z6d2#JT1c$nAi zOUQm6=@8N-F+*aO#2krv5(}Wt;or z1)6UqDzQ{qFcYA8g=dnodNkiRAn&79Jk3OXqY|H`oqdkT3esx@@dhH^m=e8_%$v6o z@f${Le%t1>t>*V_-Mo#+KO#UvHt!(dP6ymYz|TnBP2wI^(be}$Lhkj*ZwUDQ7JEHVO?wE^S`ked~s@J$orGAuUx(pQ zno~)znPj~n!JGRh_yNiK5aC&JX(F<2K2CWQ{3vxoN&=3h+8ig8=JB5T1k#-7ktY%I zy`mj&b>Xz`CEE+_F%B;Mk@{VM@)b->#Qcsq%Akob3}dN%=AIN-ks_-_*bL*hN8 z3f2B!0^X+pF6R#r@If(dewY>?Q7z8mqXb;-fKL$cNfOtP_!NmxllTmY&yx5YiEBw* zN8_oB@$mIaRZ4PN!&!@W)im`-XgBAY!MlJl@>^zfaa~F{)R`sEsN%N zN%K9`U|&BZ;5G-`u5&p32`PW-fV&B}M}X!pR6!wsMVeoG2(C`>VVw{cp!-;iI%D;?KUBM zcw|pP_9C(O9$5z>?@Zl+?>Eu1jIFNNAVk_oM zYTcI8Q|p0EE?v91CTi!CsKr=uzlppvz5dd*g~UZhmqi(~gsQYvm|5@)lsg&_9H9m= z6J?u88Hw2I*Q{1Xv4;d2mft7YG@L(N=ro~ZVpO~f@{m8G@a_$3uSFF2!cF?1wjaz>gs zsz)Rc-x9rcM3MKh!%YG^%MvgQ7sjYgk73tDAaSXj zfvz2qKElCJO{QH9dXHgCP9F0>wD>p^=b8-7Nv}N1ywpzC;vaLa5i;Q8l3XhwAw=~Q z1IYfUbO`X7T!gDcI5XCSU2ro4nKBm2Skj{!)We{X`sN3($yW60BVAj}VR_1rU)>h# zk`jZ6m}ceIj!4@{3eM$-Fn=6nEs9j~63&}@9>ocvW58X53Lx*yuK%|dB=1nIv8@;& z2cZV+ObFF|4f=tNPONV)qk@!|oO&FMCE9;@d>j=ROJZSIgBTaW>SA`2z|Wm6qEcbd?mn4+Nl2K?Oh>8px4HzqRtJUQ<7wlj@>u zJkig+k>OnABH?gzV_k>q=2E@l>8tQ4c4bwe4(Eo#4asH0`$Oa%ZQ~T#CV*wJRNPP{ z>LrCFYLKN*1zW^i%An1nCWT{L{uMh(>j9h$;KvA!nk(d^VW+tGI}%THZ~ zRH|$ujDDyKwHnq$?R*hxF$;Qs%hlN6T)b+p$Ik!9*$;cwkD&= zi;oJ_PMIQw-Sz=ZZL_?~-H7nXBP9#{2|cQaj60XNuT7-F5SvCD$v=fsn>MOEAWyy{qD51sBYoPCi%ypD*y zvUEgBEh#u}Bf>bm<}jp%*#-xpBT#%yMOx~5CMZ#M%q z9<1#_#BeLH(;_v_nRFpl-jH*ersdZ(A1F;C%9jCobK-E-Kvd8{iXJ$=ks?7-#LhDB zrn*W5HFJHGsyU7pmcsLM;`+5+0{tE8etdM)FEaF{ixl3dNGtZ}^XieOgmj6=z;MM3 z8ED@?&PTg37Q-QVSDFZFiRd)|nAm9;yt&evjFsc(g!#1uF|OLAuf)T3p9V_}MehTo zj$~ctr8crQo&@)`Ns*zs3+u1gGw*UQ1ku9d81%f0%n9>vWlq7N;&sR@@}i#TRY!P7 zD%OgZUoA*kXa2%n2Y)HQ-&%cm9_G9e6QMw*LKqNnrI6|d#wEZEgSH1?u9sw%cjIbnmp#B#CJY}u0~QuL7>5#M(Bg^#==}NdF7Hblll|nEpv9YT)N;Y z{gFKl_~lf4rXgwdpr$*JY&A#AI7NbE^jK_1gRwOkO&&)K9~Gz_M5-@LLkWyoHCs8; zo$5|pc}YH_trNLQxpg8RD8i(SP6!0qCoCROCpxL19Ol&lnKq*lXcM=C;N@nNPT%+uEY4ZGWEFC|`FVYv^>3 zvBHw7AP$~oat^$!2;=CQ0_`QzqGlz`ERtD16B-4@%@iS6@D@WbYg?26Hj5i5$RcW} zg!7Lu6soi?^Y}CzPu89%v5e=}G^Y!Z9h8%@1R`QpW*+kwtn07HC2c@dPOF+;L$!$S zn21kCEGk+5Gws&wy@6$BV26fD-$0{gv_>DLPL5d^jH0 z&iSoghf^JZXL+T0$Xfi(XuKZ67)agl`j31{LE zi9btEoRGjrEOH{jOT%o58GT_WIQO?nRb<7Y#4LGLS8Z~0Owcwdwm)E$U}APWGm*G4 z#r-zRXQ`P%!a^!0ms@ddFk$8F^mJ$97wd*FVY`H{SXBts)#l}MW%3eRAa~2NT$~6= z_K77fwK|Y~^pDHCbjy4eJrKRkL&2i12;Rkn!A$CSD7yfp4I)H&?1h}_4DW8d>V?EQ zwcrvJt(U;5&(S(KwN!p9bK8@(#p#_#V5507%URX1gFdj)RGH+kjV-gew=Cwt z6R#bSJ{2WKCDU|)sIiK+Py}$%L)xZ@v&_N+ExJ7mVLb7J1CF=P=T-}01JSK3>p@Ze zh95qRrP_?x-I>n<;KUNe%GsIe*)!g(y^@3iGwdr2(WPtbv*7qS@nmg2)wVycI+oZ& z7p@cp9+)_ImdQErE+Wid=4CCHT6!?WZEF_EET45f6gfEqp!DyUrU=_Npl}m6FHo}v6qOc77IwER1b+7)~=0a2hTp7J$ ztZsb~-$IddNfA5Ad^XiJX6L3S7q482m-*Y)Yp}q>j-tj$yylu(hXOXH7oDt~QzK-- z&;t0XI8Q?mz4w~XJ}(OG*Dg<-uPDPg*e

UKPEer6mqTZ5GHGagW7s*?@dDG*~K` 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 literal 0 HcmV?d00001 diff --git a/java/my-file.orc b/java/my-file.orc new file mode 100644 index 0000000000000000000000000000000000000000..553030a40225848e63d3633d1ae5d3874c5c5be1 GIT binary patch literal 26660 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 p>Z(?Y)zMY{;+o*cJ(YWoukX}_ Date: Tue, 1 Nov 2022 18:59:49 +0800 Subject: [PATCH 02/13] update --- java/examples/pom.xml | 4 ++++ .../org/apache/orc/examples/InMemoryCryptionWriter.java | 8 -------- .../org.apache.hadoop.crypto.key.KeyProviderFactory | 2 +- 3 files changed, 5 insertions(+), 9 deletions(-) rename java/examples/src/resources/{ => META-INF/services}/org.apache.hadoop.crypto.key.KeyProviderFactory (91%) diff --git a/java/examples/pom.xml b/java/examples/pom.xml index 1548bc66ea..9daa2b9211 100644 --- a/java/examples/pom.xml +++ b/java/examples/pom.xml @@ -36,6 +36,10 @@ org.apache.orc orc-core + + org.apache.orc + orc-shims + diff --git a/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionWriter.java b/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionWriter.java index 652d381379..6b311bac43 100644 --- a/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionWriter.java +++ b/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionWriter.java @@ -6,20 +6,12 @@ import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.orc.*; -import org.apache.orc.impl.HadoopShimsFactory; -import org.apache.orc.impl.KeyProvider; import java.io.IOException; import java.nio.charset.StandardCharsets; -import java.util.Random; public class InMemoryCryptionWriter { public static void main(Configuration conf, String[] args) throws IOException { - conf.set("hadoop.security.key.provider.path", "test:///"); - conf.set("orc.key.providerh", "hadoop"); - conf.set("orc.encrypt", "pii:ssn,email"); - KeyProvider provider = HadoopShimsFactory.get().getHadoopKeyProvider(conf, new Random()); - TypeDescription schema = TypeDescription.fromString("struct"); // the kmsKey used to encrypt data. diff --git a/java/examples/src/resources/org.apache.hadoop.crypto.key.KeyProviderFactory b/java/examples/src/resources/META-INF/services/org.apache.hadoop.crypto.key.KeyProviderFactory similarity index 91% rename from java/examples/src/resources/org.apache.hadoop.crypto.key.KeyProviderFactory rename to java/examples/src/resources/META-INF/services/org.apache.hadoop.crypto.key.KeyProviderFactory index 246058e0be..fd055ad11d 100644 --- a/java/examples/src/resources/org.apache.hadoop.crypto.key.KeyProviderFactory +++ b/java/examples/src/resources/META-INF/services/org.apache.hadoop.crypto.key.KeyProviderFactory @@ -15,4 +15,4 @@ # limitations under the License. # -test.org.apache.spark.sql.execution.datasources.orc.FakeKeyProvider$Factory +org.apache.orc.impl.FakeKeyProvider$Factory From 1dce80a164b5cfe8c02c7fb7ee0dc021a3577a17 Mon Sep 17 00:00:00 2001 From: deshanxiao Date: Tue, 1 Nov 2022 19:04:13 +0800 Subject: [PATCH 03/13] update --- java/.my-compression.orc.crc | Bin 356 -> 0 bytes java/.my-file.orc.crc | Bin 220 -> 0 bytes ...pache.hadoop.crypto.key.KeyProviderFactory | 18 ------------------ 3 files changed, 18 deletions(-) delete mode 100644 java/.my-compression.orc.crc delete mode 100644 java/.my-file.orc.crc delete mode 100644 java/examples/src/resources/META-INF/services/org.apache.hadoop.crypto.key.KeyProviderFactory diff --git a/java/.my-compression.orc.crc b/java/.my-compression.orc.crc deleted file mode 100644 index 31a3efe55de8c5bf8e9b9a69b18cc38f5c39532b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmV-q0h|6~a$^7h00IC8_gO%Eb8rTD#5MQw7nOs!`9uB{%Q=YKG}fWbS=Bf?UJ|jL z$%Nyl^ss90NC##NYhF^~|6=)hJEs(qxqlA69H@8ER3rm!XVCiW zAjN@<3bK0(S&ska_m}hPp%G~*!O|U)xE&+fqLfx}-=^?f&(lnnoY)guqFPs_eqvuH z6F`Qwwto+L4Zj3izBdDJaNV&}8x6K2r}@|u{p-lP8^{j>8(ddOe|RG&k`|<({q)X1 zztH-?cA@LEPd2333Px(q5?nP%p2&cl;0>Xld4z-`8jnq*D=dpbn&CTjA{QX-_Q(t*kC+K-o|w=T+LVK|p~()`@6f z9w@j6_-j*OFq*&F6l$I&DlU*$Ixx7deA{S%tNdI?X*om`3AP`3k*Swb-$Cw%1}BRc C>Zwft diff --git a/java/.my-file.orc.crc b/java/.my-file.orc.crc deleted file mode 100644 index 67e857f8aa4c3734a2144b3c5bb78605af89c35c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 220 zcmV<203-ina$^7h00ID-9^Kv(JqNM1ifJy;Bd1gF$0}-9LTxK01}jo$1m~L#DXUYk z+iWYR8eJ)zzQ-|LbZI#A-7(Ltb0omcT;`hnQ9FE{E+RMP6L^q=!o}N-a>A)9U|X W78_8t>d7!}IO8Bzf_SVy*!w4DOl9r> diff --git a/java/examples/src/resources/META-INF/services/org.apache.hadoop.crypto.key.KeyProviderFactory b/java/examples/src/resources/META-INF/services/org.apache.hadoop.crypto.key.KeyProviderFactory deleted file mode 100644 index fd055ad11d..0000000000 --- a/java/examples/src/resources/META-INF/services/org.apache.hadoop.crypto.key.KeyProviderFactory +++ /dev/null @@ -1,18 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -org.apache.orc.impl.FakeKeyProvider$Factory From 3c3aadbbc187f6ed7fea5ee205950e3242b27925 Mon Sep 17 00:00:00 2001 From: deshanxiao Date: Tue, 1 Nov 2022 19:05:03 +0800 Subject: [PATCH 04/13] update --- java/my-compression.orc | Bin 44199 -> 0 bytes java/my-file.orc | Bin 26660 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 java/my-compression.orc delete mode 100644 java/my-file.orc diff --git a/java/my-compression.orc b/java/my-compression.orc deleted file mode 100644 index a93f76216acf286a59781921d6863a94ed8d8c89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44199 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

UKPEer6mqTZ5GHGagW7s*?@dDG*~K` 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 diff --git a/java/my-file.orc b/java/my-file.orc deleted file mode 100644 index 553030a40225848e63d3633d1ae5d3874c5c5be1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26660 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 p>Z(?Y)zMY{;+o*cJ(YWoukX}_ Date: Tue, 1 Nov 2022 19:10:20 +0800 Subject: [PATCH 05/13] update --- java/examples/src/java/org/apache/orc/examples/Driver.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/java/examples/src/java/org/apache/orc/examples/Driver.java b/java/examples/src/java/org/apache/orc/examples/Driver.java index 42ccf0c6c9..eaf349850f 100644 --- a/java/examples/src/java/org/apache/orc/examples/Driver.java +++ b/java/examples/src/java/org/apache/orc/examples/Driver.java @@ -40,7 +40,8 @@ public class Driver { exampleMaps.put("write2", new ExampleInfo("write a sample ORC file with a map", AdvancedWriter.class)); exampleMaps.put("read2", new ExampleInfo("read a sample ORC file with a map", AdvancedReader.class)); exampleMaps.put("compressWriter", new ExampleInfo("write a ORC file with snappy compression", CompressionWriter.class)); - exampleMaps.put("cryptionWriter", new ExampleInfo("write a ORC file with cryption", InMemoryCryptionWriter.class)); + exampleMaps.put("inMemoryCryptionWriter", new ExampleInfo("write a ORC file with cryption", InMemoryCryptionWriter.class)); + exampleMaps.put("inMemoryCryptionReader", new ExampleInfo("read a ORC file with cryption", InMemoryCryptionReader.class)); } static class ExampleInfo { From 4e44b514ae9d7a7bd7766ae330a21c997fabdce0 Mon Sep 17 00:00:00 2001 From: deshanxiao Date: Tue, 1 Nov 2022 19:15:13 +0800 Subject: [PATCH 06/13] update --- .../src/java/org/apache/orc/examples/CompressionWriter.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/java/examples/src/java/org/apache/orc/examples/CompressionWriter.java b/java/examples/src/java/org/apache/orc/examples/CompressionWriter.java index dfcf0a332a..a55930155f 100644 --- a/java/examples/src/java/org/apache/orc/examples/CompressionWriter.java +++ b/java/examples/src/java/org/apache/orc/examples/CompressionWriter.java @@ -9,11 +9,8 @@ import org.apache.orc.OrcFile; import org.apache.orc.TypeDescription; import org.apache.orc.Writer; -import org.apache.orc.impl.CryptoUtils; -import org.apache.orc.impl.KeyProvider; import java.io.IOException; -import java.util.Random; public class CompressionWriter { public static void main(Configuration conf, String[] args) throws IOException { From 0e1eb4d6e8c31b77ead1963ed4b481e393fe9123 Mon Sep 17 00:00:00 2001 From: deshanxiao Date: Tue, 1 Nov 2022 19:59:31 +0800 Subject: [PATCH 07/13] update --- .../apache/orc/examples/CompressionWriter.java | 18 ++++++++++++++++++ .../orc/examples/InMemoryCryptionReader.java | 18 ++++++++++++++++++ .../orc/examples/InMemoryCryptionWriter.java | 18 ++++++++++++++++++ 3 files changed, 54 insertions(+) diff --git a/java/examples/src/java/org/apache/orc/examples/CompressionWriter.java b/java/examples/src/java/org/apache/orc/examples/CompressionWriter.java index a55930155f..2c67d26dbc 100644 --- a/java/examples/src/java/org/apache/orc/examples/CompressionWriter.java +++ b/java/examples/src/java/org/apache/orc/examples/CompressionWriter.java @@ -1,3 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.orc.examples; import org.apache.hadoop.conf.Configuration; diff --git a/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionReader.java b/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionReader.java index 21e98c3b02..332e68e280 100644 --- a/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionReader.java +++ b/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionReader.java @@ -1,3 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.orc.examples; import org.apache.hadoop.conf.Configuration; diff --git a/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionWriter.java b/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionWriter.java index 6b311bac43..fafff52c08 100644 --- a/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionWriter.java +++ b/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionWriter.java @@ -1,3 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.apache.orc.examples; import org.apache.hadoop.conf.Configuration; From 67576a62972eb7275967a48a6b3476662b7e23ce Mon Sep 17 00:00:00 2001 From: deshanxiao Date: Tue, 1 Nov 2022 08:02:56 -0700 Subject: [PATCH 08/13] update --- .../java/org/apache/orc/examples/Driver.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/java/examples/src/java/org/apache/orc/examples/Driver.java b/java/examples/src/java/org/apache/orc/examples/Driver.java index eaf349850f..73768a53ed 100644 --- a/java/examples/src/java/org/apache/orc/examples/Driver.java +++ b/java/examples/src/java/org/apache/orc/examples/Driver.java @@ -37,18 +37,23 @@ public class Driver { static { exampleMaps.put("write", new ExampleInfo("write a sample ORC file", CoreReader.class)); exampleMaps.put("read", new ExampleInfo("read a sample ORC file", CoreWriter.class)); - exampleMaps.put("write2", new ExampleInfo("write a sample ORC file with a map", AdvancedWriter.class)); - exampleMaps.put("read2", new ExampleInfo("read a sample ORC file with a map", AdvancedReader.class)); - exampleMaps.put("compressWriter", new ExampleInfo("write a ORC file with snappy compression", CompressionWriter.class)); - exampleMaps.put("inMemoryCryptionWriter", new ExampleInfo("write a ORC file with cryption", InMemoryCryptionWriter.class)); - exampleMaps.put("inMemoryCryptionReader", new ExampleInfo("read a ORC file with cryption", InMemoryCryptionReader.class)); + exampleMaps.put("write2", + new ExampleInfo("write a sample ORC file with a map", AdvancedWriter.class)); + exampleMaps.put("read2", + new ExampleInfo("read a sample ORC file with a map", AdvancedReader.class)); + exampleMaps.put("compressWriter", + new ExampleInfo("write a ORC file with snappy compression", CompressionWriter.class)); + exampleMaps.put("inMemoryCryptionWriter", + new ExampleInfo("write a ORC file with cryption", InMemoryCryptionWriter.class)); + exampleMaps.put("inMemoryCryptionReader", + new ExampleInfo("read a ORC file with cryption", InMemoryCryptionReader.class)); } static class ExampleInfo { final String exampleDescription; final Class exampleClass; - public ExampleInfo(String exampleDescription, Class exampleClass) { + ExampleInfo(String exampleDescription, Class exampleClass) { this.exampleDescription = exampleDescription; this.exampleClass = exampleClass; } From ca59202eb4b28dd1904add397b453aa38ce6b237 Mon Sep 17 00:00:00 2001 From: deshanxiao Date: Wed, 2 Nov 2022 10:45:18 +0800 Subject: [PATCH 09/13] fix --- .../java/org/apache/orc/examples/Driver.java | 38 +++++++++++-------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/java/examples/src/java/org/apache/orc/examples/Driver.java b/java/examples/src/java/org/apache/orc/examples/Driver.java index 73768a53ed..d1955ebc65 100644 --- a/java/examples/src/java/org/apache/orc/examples/Driver.java +++ b/java/examples/src/java/org/apache/orc/examples/Driver.java @@ -35,26 +35,32 @@ public class Driver { private static final Map exampleMaps = new HashMap<>(); static { - exampleMaps.put("write", new ExampleInfo("write a sample ORC file", CoreReader.class)); - exampleMaps.put("read", new ExampleInfo("read a sample ORC file", CoreWriter.class)); - exampleMaps.put("write2", - new ExampleInfo("write a sample ORC file with a map", AdvancedWriter.class)); - exampleMaps.put("read2", - new ExampleInfo("read a sample ORC file with a map", AdvancedReader.class)); - exampleMaps.put("compressWriter", - new ExampleInfo("write a ORC file with snappy compression", CompressionWriter.class)); - exampleMaps.put("inMemoryCryptionWriter", - new ExampleInfo("write a ORC file with cryption", InMemoryCryptionWriter.class)); - exampleMaps.put("inMemoryCryptionReader", - new ExampleInfo("read a ORC file with cryption", InMemoryCryptionReader.class)); + registerExample("write", + new ExampleInfo("write a sample ORC file", CoreReader.class)); + registerExample("read", + new ExampleInfo("read a sample ORC file", CoreWriter.class)); + registerExample("write2", + new ExampleInfo("write a sample ORC file with a map", AdvancedWriter.class)); + registerExample("read2", + new ExampleInfo("read a sample ORC file with a map", AdvancedReader.class)); + registerExample("compressWriter", + new ExampleInfo("write a ORC file with snappy compression", CompressionWriter.class)); + registerExample("inMemoryCryptionWriter", + new ExampleInfo("write a ORC file with cryption", InMemoryCryptionWriter.class)); + registerExample("inMemoryCryptionReader", + new ExampleInfo("read a ORC file with cryption", InMemoryCryptionReader.class)); + } + + private static void registerExample(String name, ExampleInfo info) { + exampleMaps.put(name, info); } static class ExampleInfo { - final String exampleDescription; + final String description; final Class exampleClass; - ExampleInfo(String exampleDescription, Class exampleClass) { - this.exampleDescription = exampleDescription; + ExampleInfo(String description, Class exampleClass) { + this.description = description; this.exampleClass = exampleClass; } } @@ -102,7 +108,7 @@ public static void main(String[] args) throws Exception { System.err.println(); System.err.println("Commands:"); for (Map.Entry entries: exampleMaps.entrySet()) { - System.err.printf(" %s - %s%n", entries.getKey(), entries.getValue().exampleDescription); + System.err.printf(" %s - %s%n", entries.getKey(), entries.getValue().description); } System.err.println(); System.err.println("To get more help, provide -h to the command"); From 3ad0eb96d1d1bbf11823b3a594c47ae27cea5877 Mon Sep 17 00:00:00 2001 From: deshanxiao Date: Thu, 3 Nov 2022 10:54:00 +0800 Subject: [PATCH 10/13] fix --- .../orc/examples/CompressionWriter.java | 60 +++++++-------- .../java/org/apache/orc/examples/Driver.java | 12 +-- .../orc/examples/InMemoryCryptionReader.java | 66 ---------------- .../orc/examples/InMemoryCryptionWriter.java | 73 ------------------ .../examples/InMemoryEncryptionReader.java | 71 +++++++++++++++++ .../examples/InMemoryEncryptionWriter.java | 77 +++++++++++++++++++ 6 files changed, 184 insertions(+), 175 deletions(-) delete mode 100644 java/examples/src/java/org/apache/orc/examples/InMemoryCryptionReader.java delete mode 100644 java/examples/src/java/org/apache/orc/examples/InMemoryCryptionWriter.java create mode 100644 java/examples/src/java/org/apache/orc/examples/InMemoryEncryptionReader.java create mode 100644 java/examples/src/java/org/apache/orc/examples/InMemoryEncryptionWriter.java diff --git a/java/examples/src/java/org/apache/orc/examples/CompressionWriter.java b/java/examples/src/java/org/apache/orc/examples/CompressionWriter.java index 2c67d26dbc..164479a89c 100644 --- a/java/examples/src/java/org/apache/orc/examples/CompressionWriter.java +++ b/java/examples/src/java/org/apache/orc/examples/CompressionWriter.java @@ -31,37 +31,37 @@ import java.io.IOException; public class CompressionWriter { - public static void main(Configuration conf, String[] args) throws IOException { - TypeDescription schema = - TypeDescription.fromString("struct"); - Writer snappyWriter = OrcFile.createWriter(new Path("my-compression.orc"), - OrcFile.writerOptions(conf) - .setSchema(schema) - // set compress kind to snappy. Now we have much compression - // method such as ZLIB, SNAPPY, LZO, LZ4, ZSTD. - .compress(CompressionKind.SNAPPY)); + public static void main(Configuration conf, String[] args) throws IOException { + TypeDescription schema = + TypeDescription.fromString("struct"); + Writer snappyWriter = OrcFile.createWriter(new Path("compressed.orc"), + OrcFile.writerOptions(conf) + .setSchema(schema) + // set compress kind to snappy. Now we have much compression + // method such as ZLIB, SNAPPY, LZO, LZ4, ZSTD. + .compress(CompressionKind.SNAPPY)); - VectorizedRowBatch batch = schema.createRowBatch(); - LongColumnVector x = (LongColumnVector) batch.cols[0]; - BytesColumnVector y = (BytesColumnVector) batch.cols[1]; - for (int r = 0; r < 10000; ++r) { - int row = batch.size++; - x.vector[row] = r; - byte[] buffer = ("byte-" + r).getBytes(); - y.setRef(row, buffer, 0, buffer.length); - // If the batch is full, write it out and start over. - if (batch.size == batch.getMaxSize()) { - snappyWriter.addRowBatch(batch); - batch.reset(); - } - } - if (batch.size != 0) { - snappyWriter.addRowBatch(batch); - } - snappyWriter.close(); + VectorizedRowBatch batch = schema.createRowBatch(); + LongColumnVector x = (LongColumnVector) batch.cols[0]; + BytesColumnVector y = (BytesColumnVector) batch.cols[1]; + for (int r = 0; r < 10000; ++r) { + int row = batch.size++; + x.vector[row] = r; + byte[] buffer = ("byte-" + r).getBytes(); + y.setRef(row, buffer, 0, buffer.length); + // If the batch is full, write it out and start over. + if (batch.size == batch.getMaxSize()) { + snappyWriter.addRowBatch(batch); + batch.reset(); + } } - - public static void main(String[] args) throws IOException { - main(new Configuration(), args); + if (batch.size != 0) { + snappyWriter.addRowBatch(batch); } + snappyWriter.close(); + } + + public static void main(String[] args) throws IOException { + main(new Configuration(), args); + } } diff --git a/java/examples/src/java/org/apache/orc/examples/Driver.java b/java/examples/src/java/org/apache/orc/examples/Driver.java index d1955ebc65..9296abab9f 100644 --- a/java/examples/src/java/org/apache/orc/examples/Driver.java +++ b/java/examples/src/java/org/apache/orc/examples/Driver.java @@ -45,10 +45,10 @@ public class Driver { new ExampleInfo("read a sample ORC file with a map", AdvancedReader.class)); registerExample("compressWriter", new ExampleInfo("write a ORC file with snappy compression", CompressionWriter.class)); - registerExample("inMemoryCryptionWriter", - new ExampleInfo("write a ORC file with cryption", InMemoryCryptionWriter.class)); - registerExample("inMemoryCryptionReader", - new ExampleInfo("read a ORC file with cryption", InMemoryCryptionReader.class)); + registerExample("inMemoryEncryptionWriter", + new ExampleInfo("write a ORC file with encryption", InMemoryEncryptionWriter.class)); + registerExample("inMemoryEncryptionReader", + new ExampleInfo("read a ORC file with encryption", InMemoryEncryptionReader.class)); } private static void registerExample(String name, ExampleInfo info) { @@ -104,10 +104,10 @@ public static void main(String[] args) throws Exception { System.err.println("ORC Java Examples"); System.err.println(); System.err.println("usage: java -jar orc-examples-*.jar [--help]" + - " [--define X=Y] "); + " [--define X=Y] "); System.err.println(); System.err.println("Commands:"); - for (Map.Entry entries: exampleMaps.entrySet()) { + for (Map.Entry entries : exampleMaps.entrySet()) { System.err.printf(" %s - %s%n", entries.getKey(), entries.getValue().description); } System.err.println(); diff --git a/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionReader.java b/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionReader.java deleted file mode 100644 index 332e68e280..0000000000 --- a/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionReader.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - *

- * http://www.apache.org/licenses/LICENSE-2.0 - *

- * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.orc.examples; - -import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.fs.Path; -import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector; -import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; -import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; -import org.apache.orc.*; - -import java.io.IOException; -import java.nio.charset.StandardCharsets; - -public class InMemoryCryptionReader { - public static void main(Configuration conf, String[] args) throws IOException { - // the kmsKey used to read encryption data. - byte[] kmsKey = "secret123".getBytes(StandardCharsets.UTF_8); - // InMemoryKeystore is used to get key to read encryption data. - InMemoryKeystore keyProvider = new InMemoryKeystore() - .addKey("pii", EncryptionAlgorithm.AES_CTR_128, kmsKey); - Reader reader = OrcFile.createReader(new Path("my-cryption.orc"), - OrcFile.readerOptions(conf) - // Configure the keyProvider - .setKeyProvider(keyProvider)); - System.out.println("File schema: " + reader.getSchema()); - System.out.println("Row count: " + reader.getNumberOfRows()); - - // Pick the schema we want to read using schema evolution - TypeDescription schema = - TypeDescription.fromString("struct"); - // Read the encryption data - VectorizedRowBatch batch = schema.createRowBatch(); - RecordReader rowIterator = reader.rows(reader.options() - .schema(schema)); - LongColumnVector x = (LongColumnVector) batch.cols[0]; - BytesColumnVector y = (BytesColumnVector) batch.cols[1]; - while (rowIterator.nextBatch(batch)) { - for(int row=0; row < batch.size; ++row) { - System.out.println("x: " + x.vector[row]); - System.out.println("y: " + y.toString(row)); - } - } - rowIterator.close(); - } - - public static void main(String[] args) throws IOException { - main(new Configuration(), args); - } -} diff --git a/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionWriter.java b/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionWriter.java deleted file mode 100644 index fafff52c08..0000000000 --- a/java/examples/src/java/org/apache/orc/examples/InMemoryCryptionWriter.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - *

- * http://www.apache.org/licenses/LICENSE-2.0 - *

- * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.orc.examples; - -import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.fs.Path; -import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector; -import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; -import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; -import org.apache.orc.*; - -import java.io.IOException; -import java.nio.charset.StandardCharsets; - -public class InMemoryCryptionWriter { - public static void main(Configuration conf, String[] args) throws IOException { - TypeDescription schema = - TypeDescription.fromString("struct"); - // the kmsKey used to encrypt data. - byte[] kmsKey = "secret123".getBytes(StandardCharsets.UTF_8); - // The primary use of InMemoryKeystore is for used who doesn't have a - // Hadoop KMS. - InMemoryKeystore keyProvider = new InMemoryKeystore() - .addKey("pii", EncryptionAlgorithm.AES_CTR_128, kmsKey); - // "encryption" used to specify columns and kmsKey which will be encrypted - String encryption = "pii:x,y"; - Writer writer = OrcFile.createWriter(new Path("my-cryption.orc"), - OrcFile.writerOptions(conf) - .setSchema(schema) - // Configure the keyProvider - .setKeyProvider(keyProvider) - .encrypt(encryption)); - - VectorizedRowBatch batch = schema.createRowBatch(); - LongColumnVector x = (LongColumnVector) batch.cols[0]; - BytesColumnVector y = (BytesColumnVector) batch.cols[1]; - for (int r = 0; r < 10000; ++r) { - int row = batch.size++; - x.vector[row] = r; - byte[] buffer = ("2byte-" + r).getBytes(); - y.setRef(row, buffer, 0, buffer.length); - // If the batch is full, write it out and start over. - if (batch.size == batch.getMaxSize()) { - writer.addRowBatch(batch); - batch.reset(); - } - } - if (batch.size != 0) { - writer.addRowBatch(batch); - } - writer.close(); - } - - public static void main(String[] args) throws IOException { - main(new Configuration(), args); - } -} diff --git a/java/examples/src/java/org/apache/orc/examples/InMemoryEncryptionReader.java b/java/examples/src/java/org/apache/orc/examples/InMemoryEncryptionReader.java new file mode 100644 index 0000000000..376579aef0 --- /dev/null +++ b/java/examples/src/java/org/apache/orc/examples/InMemoryEncryptionReader.java @@ -0,0 +1,71 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.orc.examples; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector; +import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; +import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import org.apache.orc.EncryptionAlgorithm; +import org.apache.orc.InMemoryKeystore; +import org.apache.orc.OrcFile; +import org.apache.orc.Reader; +import org.apache.orc.TypeDescription; +import org.apache.orc.RecordReader; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +public class InMemoryEncryptionReader { + public static void main(Configuration conf, String[] args) throws IOException { + // the kmsKey used to read encryption data. + byte[] kmsKey = "secret123".getBytes(StandardCharsets.UTF_8); + // InMemoryKeystore is used to get key to read encryption data. + InMemoryKeystore keyProvider = new InMemoryKeystore() + .addKey("pii", EncryptionAlgorithm.AES_CTR_128, kmsKey); + Reader reader = OrcFile.createReader(new Path("encrypted.orc"), + OrcFile.readerOptions(conf) + // Configure the keyProvider + .setKeyProvider(keyProvider)); + System.out.println("File schema: " + reader.getSchema()); + System.out.println("Row count: " + reader.getNumberOfRows()); + + // Pick the schema we want to read using schema evolution + TypeDescription schema = + TypeDescription.fromString("struct"); + // Read the encryption data + VectorizedRowBatch batch = schema.createRowBatch(); + RecordReader rowIterator = reader.rows(reader.options() + .schema(schema)); + LongColumnVector x = (LongColumnVector) batch.cols[0]; + BytesColumnVector y = (BytesColumnVector) batch.cols[1]; + while (rowIterator.nextBatch(batch)) { + for (int row = 0; row < batch.size; ++row) { + System.out.println("x: " + x.vector[row]); + System.out.println("y: " + y.toString(row)); + } + } + rowIterator.close(); + } + + public static void main(String[] args) throws IOException { + main(new Configuration(), args); + } +} diff --git a/java/examples/src/java/org/apache/orc/examples/InMemoryEncryptionWriter.java b/java/examples/src/java/org/apache/orc/examples/InMemoryEncryptionWriter.java new file mode 100644 index 0000000000..8afccfd1e8 --- /dev/null +++ b/java/examples/src/java/org/apache/orc/examples/InMemoryEncryptionWriter.java @@ -0,0 +1,77 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.orc.examples; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector; +import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector; +import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; +import org.apache.orc.EncryptionAlgorithm; +import org.apache.orc.InMemoryKeystore; +import org.apache.orc.TypeDescription; +import org.apache.orc.Writer; +import org.apache.orc.OrcFile; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +public class InMemoryEncryptionWriter { + public static void main(Configuration conf, String[] args) throws IOException { + TypeDescription schema = + TypeDescription.fromString("struct"); + // the kmsKey used to encrypt data. + byte[] kmsKey = "secret123".getBytes(StandardCharsets.UTF_8); + // The primary use of InMemoryKeystore is for used who doesn't have a + // Hadoop KMS. + InMemoryKeystore keyProvider = new InMemoryKeystore() + .addKey("pii", EncryptionAlgorithm.AES_CTR_128, kmsKey); + // "encryption" used to specify columns and kmsKey which will be encrypted + String encryption = "pii:x,y"; + Writer writer = OrcFile.createWriter(new Path("encrypted.orc"), + OrcFile.writerOptions(conf) + .setSchema(schema) + // Configure the keyProvider + .setKeyProvider(keyProvider) + .encrypt(encryption)); + + VectorizedRowBatch batch = schema.createRowBatch(); + LongColumnVector x = (LongColumnVector) batch.cols[0]; + BytesColumnVector y = (BytesColumnVector) batch.cols[1]; + for (int r = 0; r < 10000; ++r) { + int row = batch.size++; + x.vector[row] = r; + byte[] buffer = ("byte-" + r).getBytes(); + y.setRef(row, buffer, 0, buffer.length); + // If the batch is full, write it out and start over. + if (batch.size == batch.getMaxSize()) { + writer.addRowBatch(batch); + batch.reset(); + } + } + if (batch.size != 0) { + writer.addRowBatch(batch); + } + writer.close(); + } + + public static void main(String[] args) throws IOException { + main(new Configuration(), args); + } +} From d5d02b51bad6fb9817afdc7a026d7ad5618d1224 Mon Sep 17 00:00:00 2001 From: deshanxiao Date: Thu, 3 Nov 2022 11:20:30 +0800 Subject: [PATCH 11/13] update --- java/checkstyle.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/java/checkstyle.xml b/java/checkstyle.xml index c69d25df80..457895ee00 100644 --- a/java/checkstyle.xml +++ b/java/checkstyle.xml @@ -32,6 +32,9 @@ + + + From 14d89d22372ab88ac7895295d78328908c7dea2f Mon Sep 17 00:00:00 2001 From: deshanxiao Date: Thu, 3 Nov 2022 11:30:51 +0800 Subject: [PATCH 12/13] update --- .../java/org/apache/orc/examples/InMemoryEncryptionReader.java | 2 +- .../java/org/apache/orc/examples/InMemoryEncryptionWriter.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java/examples/src/java/org/apache/orc/examples/InMemoryEncryptionReader.java b/java/examples/src/java/org/apache/orc/examples/InMemoryEncryptionReader.java index 376579aef0..a29ce9cfdc 100644 --- a/java/examples/src/java/org/apache/orc/examples/InMemoryEncryptionReader.java +++ b/java/examples/src/java/org/apache/orc/examples/InMemoryEncryptionReader.java @@ -27,8 +27,8 @@ import org.apache.orc.InMemoryKeystore; import org.apache.orc.OrcFile; import org.apache.orc.Reader; -import org.apache.orc.TypeDescription; import org.apache.orc.RecordReader; +import org.apache.orc.TypeDescription; import java.io.IOException; import java.nio.charset.StandardCharsets; diff --git a/java/examples/src/java/org/apache/orc/examples/InMemoryEncryptionWriter.java b/java/examples/src/java/org/apache/orc/examples/InMemoryEncryptionWriter.java index 8afccfd1e8..1d006f030a 100644 --- a/java/examples/src/java/org/apache/orc/examples/InMemoryEncryptionWriter.java +++ b/java/examples/src/java/org/apache/orc/examples/InMemoryEncryptionWriter.java @@ -25,9 +25,9 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch; import org.apache.orc.EncryptionAlgorithm; import org.apache.orc.InMemoryKeystore; +import org.apache.orc.OrcFile; import org.apache.orc.TypeDescription; import org.apache.orc.Writer; -import org.apache.orc.OrcFile; import java.io.IOException; import java.nio.charset.StandardCharsets; From e1704534d9e9f5a470df2469bbd0217429f8f5df Mon Sep 17 00:00:00 2001 From: deshanxiao Date: Thu, 3 Nov 2022 13:27:36 +0800 Subject: [PATCH 13/13] update --- java/checkstyle.xml | 3 --- 1 file changed, 3 deletions(-) diff --git a/java/checkstyle.xml b/java/checkstyle.xml index 457895ee00..c69d25df80 100644 --- a/java/checkstyle.xml +++ b/java/checkstyle.xml @@ -32,9 +32,6 @@ - - -