Эх сурвалжийг харах

HUE-7 [metastore] Generate partitions in the backend

Romain Rigaux 9 жил өмнө
parent
commit
35074bd

+ 1 - 1
desktop/core/src/desktop/templates/responsive.mako

@@ -303,11 +303,11 @@ ${ hueIcons.symbols() }
         <li><a href="javascript: void(0);">Custom App 3</a></li>
         <li class="header">&nbsp;</li>
         <li class="header" style="padding-left: 4px; border-bottom: 1px solid #DDD; padding-bottom: 3px;">${ _('Browse') }</li>
+        <li data-bind="click: function () { onePageViewModel.currentApp('jobbrowser') }"><a href="javascript: void(0);">Jobs</a></li>
         <li data-bind="click: function () { onePageViewModel.currentApp('metastore') }"><a href="javascript: void(0);">Tables</a></li>
         <li data-bind="click: function () { onePageViewModel.currentApp('indexes') }"><a href="javascript: void(0);">Indexes</a></li>
         <li data-bind="click: function () { onePageViewModel.currentApp('filebrowser') }"><a href="javascript: void(0);">Files</a></li>
         <li data-bind="click: function () { onePageViewModel.currentApp('filebrowser_s3') }"><a href="javascript: void(0);">S3</a></li>
-        <li data-bind="click: function () { onePageViewModel.currentApp('jobbrowser') }"><a href="javascript: void(0);">Jobs</a></li>
         <li><a href="javascript: void(0);">HBase</a></li>
         <li><a href="javascript: void(0);">Security</a></li>
       </ul>

+ 1 - 1
desktop/libs/indexer/src/indexer/api3.py

@@ -290,7 +290,7 @@ def _create_table_from_a_file(request, source, destination):
           'primary_keys': primary_keys if table_format == 'kudu' and not load_data else []
        },
       'columns': columns,
-      'partition_columns': [],
+      'partition_columns': partition_columns,
       'database': database
     }
   )

+ 1 - 1
desktop/libs/indexer/src/indexer/templates/gen/create_table_statement.mako

@@ -59,7 +59,7 @@ ${ column_list(table, columns) | n }
 COMMENT "${table["comment"] | n }"
 % endif
 % if len(partition_columns) > 0:
-PARTITIONED BY ${column_list(partition_columns)|n}
+PARTITIONED BY ${ column_list(table, partition_columns) | n }
 % endif
 ## TODO: CLUSTERED BY here
 ## TODO: SORTED BY...INTO...BUCKETS here

+ 49 - 50
desktop/libs/indexer/src/indexer/templates/importer.mako

@@ -360,10 +360,6 @@ ${ assist.assistPanel() }
             </label>
           </div>
 
-          <label class="checkbox">
-            <input type="checkbox" data-bind="checked: importData, disable: ! useDefaultLocation() && $parent.createWizard.source.path() == nonDefaultLocation();"> ${_('Import data')}
-          </label>
-
           <label class="checkbox">
             <input type="checkbox" data-bind="checked: useDefaultLocation"> ${_('Default location')}
           </label>
@@ -373,6 +369,10 @@ ${ assist.assistPanel() }
             </label>
           </span>
 
+          <label class="checkbox">
+            <input type="checkbox" data-bind="checked: importData, disable: ! useDefaultLocation() && $parent.createWizard.source.path() == nonDefaultLocation();"> ${_('Import data')}
+          </label>
+
           <label class="checkbox">
             <input type="checkbox" data-bind="checked: useCustomDelimiters"> ${_('Custom delimiters')}
           </label>
@@ -413,61 +413,60 @@ ${ assist.assistPanel() }
           </div>
 
           <label for="tablePartitions" class="control-label"><div>${ _('Partitions') }</div>
+
+            <!-- ko if: tableFormat() != 'kudu' -->
             <div class="form-inline" data-bind="foreach: partitionColumns">
-              <!-- ko if: $parent.tableFormat() != 'kudu' -->
                 <div data-bind="template: { name: 'table-field-template', data: $data }" class="margin-top-10 field"></div>
                 <a data-bind="click: function() { $parent.partitionColumns.remove($data); }"><i class="fa fa-minus"></i></a>
+            </div>
+            <a data-bind="click: function() { partitionColumns.push($root.loadField({operations: [], nested: [], name: '', level: 0, type: '', showProperties: false, isPartition: true})); }" class="pointer margin-left-20" title="${_('Add Operation')}"><i class="fa fa-plus"></i> ${_('Add partition')}</a>
+            <!-- /ko -->
+
+            <!-- ko if: tableFormat() == 'kudu' -->
+            <div class="form-inline" data-bind="foreach: kuduPartitionColumns">
+              ${ _('Columns') }
+              <select id="kuduPks" data-bind="options: $parent.primaryKeys, selectedOptions: columns" size="3" multiple="true"></select>
+              <select data-bind="options: ['RANGE BY', 'HASH'], value: name"></select>
+
+              <!-- ko if: name() == 'HASH' -->
+                <input type="number" data-bind="value: int_val">
               <!-- /ko -->
 
-              <!-- ko if: $parent.tableFormat() == 'kudu' -->
-                ${ _('Columns') }
-                <select id="kuduPks" data-bind="options: $parent.primaryKeys, selectedOptions: columns" size="3" multiple="true"></select>
-                <select data-bind="options: ['RANGE BY', 'HASH'], value: name"></select>
-
-                <!-- ko if: name() == 'HASH' -->
-                  <input type="number" data-bind="value: int_val">
-                <!-- /ko -->
-
-                <!-- ko if: name() == 'RANGE BY' -->
-                  <div class="form-inline" data-bind="foreach: range_partitions">
-                    <!-- ko if: name() == 'VALUES' -->
-                      <input type="input" data-bind="value: lower_val">
-                      <input type="checkbox" data-bind="checked: include_lower_val">
-                      <
-                      <span data-bind="text: '=', visible: include_lower_val"></span>
-                      <select data-bind="options: ['VALUES', 'VALUE'], value: name"></select>
-                      <
-                      <span data-bind="text: '=', visible: include_upper_val"></span>
-                      <input type="input" data-bind="value: upper_val">
-                      <input type="checkbox" data-bind="checked: include_upper_val">
-                    <!-- /ko -->
-
-                    <!-- ko if: name() == 'VALUE' -->
-                      <select data-bind="options: ['VALUES', 'VALUE'], value: name"></select>
-                      <div class="form-inline" data-bind="foreach: values">
-                        <input type="text" data-bind="value: $data">
-                        <a data-bind="click: function() { $parent.values.remove($data); }"><i class="fa fa-minus"></i></a>
-                      </div>
-                      <a data-bind="click: function() { values.push(''); }"><i class="fa fa-plus"></i></a>
-                    <!-- /ko -->
-                    <a data-bind="click: function() { $parent.range_partitions.remove($data); }"><i class="fa fa-minus"></i></a>
-                  </div>
-
-                  <a data-bind="click: function() { range_partitions.push(ko.mapping.fromJS({values: [''], name: 'VALUES', lower_val: 0, include_lower_val: true, upper_val: 1, include_upper_val: true})); }"><i class="fa fa-plus"></i></a>
-                <!-- /ko -->
-
-                <a data-bind="click: function() { $parent.kuduPartitionColumns.remove($data); }"><i class="fa fa-minus"></i></a>
-                <a data-bind="click: function() { $parent.kuduPartitionColumns.push(ko.mapping.fromJS({columns: [], range_partitions: [], name: 'HASH', int_val: 16})); }" class="pointer margin-left-20" title="${_('Add Operation')}"><i class="fa fa-plus"></i> ${_('Add partition')}</a>
+              <!-- ko if: name() == 'RANGE BY' -->
+                <div class="form-inline" data-bind="foreach: range_partitions">
+                  <!-- ko if: name() == 'VALUES' -->
+                    <input type="input" data-bind="value: lower_val">
+                    <input type="checkbox" data-bind="checked: include_lower_val">
+                    <
+                    <span data-bind="text: '=', visible: include_lower_val"></span>
+                    <select data-bind="options: ['VALUES', 'VALUE'], value: name"></select>
+                    <
+                    <span data-bind="text: '=', visible: include_upper_val"></span>
+                    <input type="input" data-bind="value: upper_val">
+                    <input type="checkbox" data-bind="checked: include_upper_val">
+                  <!-- /ko -->
+
+                  <!-- ko if: name() == 'VALUE' -->
+                    <select data-bind="options: ['VALUES', 'VALUE'], value: name"></select>
+                    <div class="form-inline" data-bind="foreach: values">
+                      <input type="text" data-bind="value: $data">
+                      <a data-bind="click: function() { $parent.values.remove($data); }"><i class="fa fa-minus"></i></a>
+                    </div>
+                    <a data-bind="click: function() { values.push(''); }"><i class="fa fa-plus"></i></a>
+                  <!-- /ko -->
+                  <a data-bind="click: function() { $parent.range_partitions.remove($data); }"><i class="fa fa-minus"></i></a>
+                </div>
+
+                <a data-bind="click: function() { range_partitions.push(ko.mapping.fromJS({values: [''], name: 'VALUES', lower_val: 0, include_lower_val: true, upper_val: 1, include_upper_val: true})); }"><i class="fa fa-plus"></i></a>
               <!-- /ko -->
-            </div>
 
-            <!-- ko if: tableFormat() != 'kudu' -->
-              <a data-bind="click: function() { partitionColumns.push($root.loadField({operations: [], nested: [], name: '', level: 0, type: '', showProperties: false, isPartition: true})); }" class="pointer margin-left-20" title="${_('Add Operation')}"><i class="fa fa-plus"></i> ${_('Add partition')}</a>
+              <a data-bind="click: function() { $parent.kuduPartitionColumns.remove($data); }"><i class="fa fa-minus"></i></a>
+              <a data-bind="click: function() { $parent.kuduPartitionColumns.push(ko.mapping.fromJS({columns: [], range_partitions: [], name: 'HASH', int_val: 16})); }" class="pointer margin-left-20" title="${_('Add Operation')}"><i class="fa fa-plus"></i> ${_('Add partition')}</a>
             <!-- /ko -->
+          </div>
+          <a data-bind="click: function() { kuduPartitionColumns.push(ko.mapping.fromJS({columns: [], range_partitions: [], name: 'HASH', int_val: 16})); }" class="pointer margin-left-20" title="${_('Add Operation')}"><i class="fa fa-plus"></i> ${_('Add partition')}</a>
+          <!-- /ko -->
 
-            <!-- ko if: tableFormat() == 'kudu' -->
-              <a data-bind="click: function() { kuduPartitionColumns.push(ko.mapping.fromJS({columns: [], range_partitions: [], name: 'HASH', int_val: 16})); }" class="pointer margin-left-20" title="${_('Add Operation')}"><i class="fa fa-plus"></i> ${_('Add partition')}</a>
-            <!-- /ko -->
           </label>
         <!-- /ko -->