mirror of https://github.com/apache/druid.git
Web console: add tile for Azure Event Hubs (via Kafka API) (#10317)
* Add Azure Event Hubs * better note * update icon
This commit is contained in:
parent
475d86a4f7
commit
e81a9df507
Binary file not shown.
After Width: | Height: | Size: 7.7 KiB |
|
@ -70,7 +70,12 @@ export type IngestionComboType =
|
||||||
| 'index_parallel:hdfs';
|
| 'index_parallel:hdfs';
|
||||||
|
|
||||||
// Some extra values that can be selected in the initial screen
|
// Some extra values that can be selected in the initial screen
|
||||||
export type IngestionComboTypeWithExtra = IngestionComboType | 'hadoop' | 'example' | 'other';
|
export type IngestionComboTypeWithExtra =
|
||||||
|
| IngestionComboType
|
||||||
|
| 'azure-event-hubs'
|
||||||
|
| 'hadoop'
|
||||||
|
| 'example'
|
||||||
|
| 'other';
|
||||||
|
|
||||||
export function adjustIngestionSpec(spec: IngestionSpec) {
|
export function adjustIngestionSpec(spec: IngestionSpec) {
|
||||||
const tuningConfig = deepGet(spec, 'spec.tuningConfig');
|
const tuningConfig = deepGet(spec, 'spec.tuningConfig');
|
||||||
|
@ -153,6 +158,9 @@ export function getIngestionTitle(ingestionType: IngestionComboTypeWithExtra): s
|
||||||
case 'hadoop':
|
case 'hadoop':
|
||||||
return 'HDFS';
|
return 'HDFS';
|
||||||
|
|
||||||
|
case 'azure-event-hubs':
|
||||||
|
return 'Azure Event Hub';
|
||||||
|
|
||||||
case 'example':
|
case 'example':
|
||||||
return 'Example data';
|
return 'Example data';
|
||||||
|
|
||||||
|
|
|
@ -706,6 +706,7 @@ export class LoadDataView extends React.PureComponent<LoadDataViewProps, LoadDat
|
||||||
<div className="main bp3-input">
|
<div className="main bp3-input">
|
||||||
{this.renderIngestionCard('kafka')}
|
{this.renderIngestionCard('kafka')}
|
||||||
{this.renderIngestionCard('kinesis')}
|
{this.renderIngestionCard('kinesis')}
|
||||||
|
{this.renderIngestionCard('azure-event-hubs')}
|
||||||
{this.renderIngestionCard('index_parallel:s3')}
|
{this.renderIngestionCard('index_parallel:s3')}
|
||||||
{this.renderIngestionCard('index_parallel:azure')}
|
{this.renderIngestionCard('index_parallel:azure')}
|
||||||
{this.renderIngestionCard('index_parallel:google')}
|
{this.renderIngestionCard('index_parallel:google')}
|
||||||
|
@ -800,6 +801,24 @@ export class LoadDataView extends React.PureComponent<LoadDataViewProps, LoadDat
|
||||||
case 'kinesis':
|
case 'kinesis':
|
||||||
return <p>Load streaming data in real-time from Amazon Kinesis.</p>;
|
return <p>Load streaming data in real-time from Amazon Kinesis.</p>;
|
||||||
|
|
||||||
|
case 'azure-event-hubs':
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<p>Azure Event Hubs provides an Apache Kafka compatible API for consuming data.</p>
|
||||||
|
<p>
|
||||||
|
Data from an Event Hub can be streamed into Druid by enabling the Kafka API on the
|
||||||
|
Namespace.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Please see the{' '}
|
||||||
|
<ExternalLink href="https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-for-kafka-ecosystem-overview">
|
||||||
|
Event Hub documentation
|
||||||
|
</ExternalLink>{' '}
|
||||||
|
for more information.
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
case 'example':
|
case 'example':
|
||||||
if (exampleManifests && exampleManifests.length) {
|
if (exampleManifests && exampleManifests.length) {
|
||||||
return; // Yield to example picker controls
|
return; // Yield to example picker controls
|
||||||
|
@ -855,6 +874,45 @@ export class LoadDataView extends React.PureComponent<LoadDataViewProps, LoadDat
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
case 'azure-event-hubs':
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<FormGroup>
|
||||||
|
<Callout intent={Intent.WARNING}>
|
||||||
|
Please review and fill in the <Code>consumerProperties</Code> on the next step.
|
||||||
|
</Callout>
|
||||||
|
</FormGroup>
|
||||||
|
<FormGroup>
|
||||||
|
<Button
|
||||||
|
text="Connect via Kafka API"
|
||||||
|
rightIcon={IconNames.ARROW_RIGHT}
|
||||||
|
intent={Intent.PRIMARY}
|
||||||
|
onClick={() => {
|
||||||
|
// Use the kafka ingestion type but preset some consumerProperties required for Event Hubs
|
||||||
|
let newSpec = updateIngestionType(spec, 'kafka');
|
||||||
|
newSpec = deepSet(
|
||||||
|
newSpec,
|
||||||
|
'spec.ioConfig.consumerProperties.{security.protocol}',
|
||||||
|
'SASL_SSL',
|
||||||
|
);
|
||||||
|
newSpec = deepSet(
|
||||||
|
newSpec,
|
||||||
|
'spec.ioConfig.consumerProperties.{sasl.mechanism}',
|
||||||
|
'PLAIN',
|
||||||
|
);
|
||||||
|
newSpec = deepSet(
|
||||||
|
newSpec,
|
||||||
|
'spec.ioConfig.consumerProperties.{sasl.jaas.config}',
|
||||||
|
`org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Value of 'Connection string-primary key' in the Azure UI";`,
|
||||||
|
);
|
||||||
|
this.updateSpec(newSpec);
|
||||||
|
this.updateStep('connect');
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</FormGroup>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
case 'example':
|
case 'example':
|
||||||
if (!exampleManifests) return;
|
if (!exampleManifests) return;
|
||||||
return (
|
return (
|
||||||
|
|
Loading…
Reference in New Issue