<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Azure Data Lake &amp; Azure HDInsight Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/azuredatalake/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/azuredatalake/feed.xml</link>
    <description>The official blog for the Azure Data Lake services - Azure Data Lake Analytics, Azure Data Lake Store and Azure HDInsight</description>
    <lastBuildDate>Tue, 31 Jul 2018 07:25:16 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Introducing U-SQL database projects – U-SQL database development and deployment made easy (public preview)</title>
      <link>https://docs.microsoft.com/archive/blogs/azuredatalake/introducing-u-sql-database-projects-u-sql-database-development-and-deployment-made-easy-public-preview</link>
      <pubDate>Tue, 31 Jul 2018 07:25:16 GMT</pubDate>
      <dc:creator><![CDATA[Yanan Cai - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/azuredatalake/?p=10385</guid>
      <description><![CDATA[Today we are pleased to introduce the U-SQL database project, a new project type in Azure Data Lake...]]></description>
      <content:encoded><![CDATA[Today we are pleased to introduce the <strong>U-SQL database project</strong>, a new project type in <a href="http://aka.ms/adltoolsvs">Azure Data Lake Tools for Visual Studio (ADL Tools for VS)</a> that accelerates U-SQL database development, management and deployment.

All objects (except for credentials) in U-SQL databases can be created and managed with the U-SQL Data Definition Language (DDL). Before, some customers used inline DDL statements in a U-SQL query to manage database object definitions. But inline DDL statements drop and recreate objects every time a script is run, which not only causes redundant metadata operations, but can also bring job failures due to metadata locking issues. Some customers use a general U-SQL project to manage the database definitions using multiple U-SQL scripts. This is more organized and manageable but when deploying the database, they need to take care of the order of script submissions and manage object dependencies. Furthermore, they need to take extra steps to track deployment job status in order to guarantee atomic deployment.

To address these inconveniences, ADL Tools for VS (after version 2.3.4000.3) provides the U-SQL database project to help customers develop, manage and deploy U-SQL databases.
<h1>Key benefits</h1>
<h2>Simplifies the U-SQL database development, management and deployment experience</h2>
A U-SQL database project is the abstract description for a U-SQL database. Customers can manage all DDL statements, assembly sources and dependent resources in this U-SQL database project. The build output of the U-SQL database project is a database deployment package (.usqldbpack), which can be deployed to an ADLA account to create a U-SQL database instance.
<h2>
Allows management of database environment for local build and run</h2>
If a U-SQL script queries tables and references assemblies, the database environment needs to be set up locally before build and local run, or it will fail due to missing database references. With the U-SQL database project, customers can now manage database dependencies by adding database project references to the U-SQL project.

After adding database references, the build process automatically deploys the database environment before compiling U-SQL scripts, allowing projects to build without any additional database setup tasks. <a href="https://docs.microsoft.com/en-us/azure/data-lake-analytics/data-lake-analytics-data-lake-tools-develop-usql-database#reference-a-u-sql-database-project">Learn more about database project reference</a>.

You can also run U-SQL queries against the Local-project account without deploying and refreshing database environment, ADL Tools for VS helps to set up referenced database environment before local execution. <a href="https://docs.microsoft.com/en-us/azure/data-lake-analytics/data-lake-analytics-data-lake-tools-local-run#local-run-with-local-project-account">Learn more about local run with (Local-project) account</a>.
<h1>
Try it now</h1>
Start using the U-SQL database project for U-SQL database development. Kindly let us know your feedback at <a href="mailto:adldevtool@microsoft.com">adldevtool@microsoft.com</a>.

<a href="https://docs.microsoft.com/en-us/azure/data-lake-analytics/data-lake-analytics-data-lake-tools-develop-usql-database">Learn how to use U-SQL database project to develop U-SQL database for Azure Data Lake</a>.
<h1>
Known limitation for public preview</h1>
DROP statement is now allowed during public preview, we will add allowing drop and allowing data-related drop configurations in the next release.]]></content:encoded>
    </item>
    <item>
      <title>Build hybrid cloud analytics solutions with ADLA Task in SSIS</title>
      <link>https://docs.microsoft.com/archive/blogs/azuredatalake/build-hybrid-cloud-analytics-solutions-with-adla-task-in-ssis</link>
      <pubDate>Mon, 23 Jul 2018 05:59:17 GMT</pubDate>
      <dc:creator><![CDATA[Yanan Cai - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/azuredatalake/?p=10355</guid>
      <description><![CDATA[Today, we are pleased to announce new support for the Azure Data Lake Analytics Task (ADLA Task) in...]]></description>
      <content:encoded><![CDATA[Today, we are pleased to announce new support for the <a href="https://docs.microsoft.com/sql/integration-services/control-flow/azure-data-lake-analytics-task?view=sql-server-2017">Azure Data Lake Analytics Task (ADLA Task)</a> in the <a href="https://msdn.microsoft.com/library/mt146770.aspx">Azure Feature Pack for Integration Services (SSIS)</a>. The ADLA Task enables you to easily extend your existing SSIS workflows with big data compute capability in the cloud powered by ADLA.

More and more customers are storing large amounts of raw data in the cloud. At the same time, some customers continue to process the data on-premises due to legacy or security constraints. Since the movement of big data is very costly, it is a good choice to transform the born-in-the-cloud big data into reasonable size in the cloud, and then only move aggregated data off the cloud and integrate it with existing on-premises data sources.

The rest of this blog shows how you can build hybrid cloud analytics solutions with ADLA Task in Azure Feature Pack.<span style="font-family: Calibri"><span><span style="color: #000000"></span></span></span>
<h1>Extending SSIS with big data capability using ADLA</h1>
With ADLA Task in Azure Feature Pack, you can now orchestrate and create U-SQL jobs as a part of the SSIS workflow to process big data in the cloud. As ADLA is a serverless analytics service, you don’t need to worry about cluster creation and initialization, all you need is an ADLA account to start your analytics.

You can get the U-SQL script from different places by using SSIS built-in functions. You can:
<ul>
 	<li>Edit the inline U-SQL script in ADLA Task to call table valued functions and stored procedures in your U-SQL databases.</li>
 	<li>Use the U-SQL files stored in ADLS or Azure Blob Storage by leveraging Azure Data Lake Store File System Task and Azure Blob Download Task.</li>
 	<li>Use the U-SQL files from local file directly using SSIS File Connection Manager.</li>
 	<li>Use an SSIS variable that contains the U-SQL statements. You can also use SSIS expression to generate the U-SQL statements dynamically.</li>
</ul>
These options enable flexibility for your job. <a href="https://docs.microsoft.com/azure/data-lake-analytics/data-lake-analytics-schedule-jobs-ssis">Learn more about how to set up these user cases in this document.</a>

<img width="402" height="295" class="aligncenter size-full wp-image-10365" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/07/Extending-SSIS-with-big-data-capability-using-ADLA.png" />
<h1>Using SSIS to move cloud compute results back to on-premises</h1>
After transforming big data using ADLA, you can then move the processed data back to on-premises for reporting and additional processing. You can use Foreach Loop Container (with Foreach ADLS File Enumerator or Foreach Azure Blob Enumerator) and run Data Flow tasks to copy data from cloud to on-premises databases.

<img width="1324" height="902" class="aligncenter size-full wp-image-10375" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/07/Move-cloud-results-bask-to-on-premises.png" />
<h1>Try it yourself</h1>
To build and run the scenarios by yourself, please refer to this document: <a href="https://docs.microsoft.com/azure/data-lake-analytics/data-lake-analytics-schedule-jobs-ssis">Schedule U-SQL jobs using SQL Server Integration Services (SSIS)</a>. Contact us at <a href="mailto:adldevtool@microsoft.com">adldevtool@microsoft.com</a> for comments and feedback.]]></content:encoded>
    </item>
    <item>
      <title>Easier Azure Data Lake Store management: alerts for folders and files.</title>
      <link>https://docs.microsoft.com/archive/blogs/azuredatalake/easier-azure-data-lake-store-management-alerts-for-folders-and-files</link>
      <pubDate>Tue, 19 Jun 2018 00:07:58 GMT</pubDate>
      <dc:creator><![CDATA[José Lara [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/azuredatalake/?p=10325</guid>
      <description><![CDATA[The massive scale and capabilities of Azure Data Lake Store are regularly used by companies for big...]]></description>
      <content:encoded><![CDATA[The massive scale and capabilities of Azure Data Lake Store are regularly used by companies for big data storage. As the number of files, file types, and folders grow, things get harder to manage and staying compliant becomes a greater challenge for companies. Regulations such as GDPR (General Data Protection Regulation) have heightened requirements for control and supervision of files that contain sensitive data.

In this blog post, <strong>I'll show you how to set up alerts in your Azure Data Lake Store to make managing your data easier</strong>. We will create a <em></em>log analytics query and an alert that monitors a specific path and file type and sends a notification whenever the path or file is created, accessed, modified, or deleted.
<h2>Step 1: Connect Azure Data Lake and Log Analytics</h2>
Data Lake accounts can be configured to generate diagnostics logs, some of which are automatically generated (e.g. regular Data Lake operations such as reporting current usage, or whenever a job completes). Others are generated based on requests (e.g. when a new file is created, opened, or when a job is submitted). Both Data Lake Analytics and Data Lake Store can be configured to send these diagnostics logs to a Log Analytics account where we can query the logs and create alerts based on the query results.

To send diagnostics logs to a Log Analytics account, follow the steps outlined in the blog post <a href="https://blogs.msdn.microsoft.com/azuredatalake/2018/02/06/struggling-to-get-insights-for-your-azure-data-lake-store-azure-log-analytics-can-help/">Struggling to get insights for your Azure Data Lake Store? Azure Log Analytics can help! </a>
<h2>Step 2: Create a query that identifies when a path or file type is used</h2>
If you followed our previous blog on how to <a href="https://azure.microsoft.com/en-us/blog/control-azure-data-lake-costs-using-log-analytics-to-create-service-alerts/">control Azure Data Lake costs using Log Analytics to create service alerts</a>, you will remember that a Log Analytics query can be used to identify when certain operations take place in the Azure Data Lake Store account. For this specific case, a couple of different fields can be queried, such as Path_s. Have a look at the several example queries that follow:
<h3>Query File Paths, Names and Types</h3>
<pre>AzureDiagnostics
| where ( ResourceProvider == "MICROSOFT.DATALAKESTORE" )
| where ( Path_s contains "/webhdfs/v1/##YOUR PATH##")</pre>
This query will return every single action/diagnostic log that takes place in a specified path. It can be used to:
<ul>
 	<li>Query for a specific path
<pre>| where ( Path_s contains "/webhdfs/v1/MY/SAMPLE/PATH/")</pre>
</li>
 	<li>Query for a file name and/or type
<pre>| where ( Path_s endswith "MYFILE.EXT")</pre>
</li>
 	<li>Query for both file path and file name/type.
<pre>| where ( Path_s contains "/webhdfs/v1/MY/SAMPLE/PATH/") AND where ( Path_s endswith "MYFILE.EXT")</pre>
or
<pre>| where ( Path_s contains "/webhdfs/v1/MY/SAMPLE/PATH/")
| where ( Path_s endswith"MYFILE.EXT")</pre>
</li>
</ul>
<h3>Query Folder/File Creation or Deletion</h3>
We can also be more specific on the type of operations, such as:
<ul>
 	<li>A new file gets created in a path:
<pre> AzureDiagnostics
 | where ( ResourceProvider == "MICROSOFT.DATALAKESTORE" )
 | where ( OperationName == "<strong>create</strong>" )
 | where ( Path_s contains "/webhdfs/v1/##YOUR PATH##")</pre>
</li>
 	<li>A new folder is created in a path
<pre> AzureDiagnostics
 | where ( ResourceProvider == "MICROSOFT.DATALAKESTORE" )
 | where ( OperationName == "<strong>mkdirs</strong>" )
 | where ( Path_s contains "/webhdfs/v1/##YOUR PATH##")</pre>
</li>
 	<li>A folder/path is deleted in a path
<pre> AzureDiagnostics
 | where ( ResourceProvider == "MICROSOFT.DATALAKESTORE" )
 | where ( OperationName == "<strong>delete</strong>" )
 | where ( Path_s contains "/webhdfs/v1/##YOUR PATH##")</pre>
</li>
</ul>
<h3>Query on specific account</h3>
If you have multiple Azure Data Lake Store accounts that write logs to a single Log Analytics account, you can add specify which account to search in the query too:
<pre><span>| where ( Resource == "</span><strong>myadlsacct</strong><span>" ) 
</span><b></b></pre>
<h3>Using Other Query Operations</h3>
Some other operations (<a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/WebHDFS.html#Operations">compliant with WebHDFS</a>) that may be useful for creating a query that targets specific actions are:
<ul>
 	<li><strong><a target="_blank" href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/WebHDFS.html#Open_and_Read_a_File" rel="noopener">open</a></strong></li>
 	<li><strong><a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/WebHDFS.html#Rename_a_FileDirectory">rename</a></strong></li>
 	<li><strong><a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/WebHDFS.html#Append_to_a_File">append</a></strong></li>
 	<li><a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/WebHDFS.html#Check_access"><strong>checkaccess</strong></a></li>
</ul>
For ADLS-specific operations:
<ul>
 	<li><strong>setexpiry</strong> - when the file expiration is set.</li>
 	<li><strong>modifyaclentries</strong> - when the ACL for a file/folder is modified.</li>
</ul>
Here is an example of a query combining both account and operation:
<pre>AzureDiagnostics 
| where ( ResourceProvider == "MICROSOFT.DATALAKESTORE" ) 
| where ( Resource == "myadlsacct" ) 
| where ( OperationName == "create" ) 
| where ( Path_s contains "/webhdfs/v1/##YOUR PATH##")</pre>
&nbsp;
<h2>Step 3: Create an alert when an event is detected or a threshold is reached.</h2>
Using a query such as those shown in the previous step, Log Analytics can be used to set an alert that will notify users via e-mail, text message, or webhook when the event is captured or metric threshold is reached. Check out this blog post for creating a new alert: <a href="https://blogs.msdn.microsoft.com/azuredatalake/2018/04/10/simple-trick-to-stay-on-top-of-your-azure-data-lake-create-alerts-using-log-analytics/">Simple Trick to Stay on top of your Azure Data Lake: Create Alerts using Log Analytics</a>.

An email alert for a new CSV file in an Azure Data Lake Store account can look as follows:

[caption id="attachment_10335" align="alignnone" width="800"]<img width="800" height="777" class="size-full wp-image-10335" alt="Alert for a new file of type CSV created in an ADLS account" src="https://msdnshared.blob.core.windows.net/media/2018/06/ADLS-Alerts-NewFile.png" /> <em>Alert for a new file of type CSV created in an ADLS account</em>[/caption]

As with any other alerts, the name, delivery method (email, sms, and webhook) can be set to fit your needs.
<h2>The bottom line for a best practice...</h2>
Setting up alerts for your Azure Data Lake Store to monitor when files or directories are created, accessed, modified, or deleted will help manage your account and data efficiently. With the right alerts in place, you will be able to tell when certain files are created, or when folders are created in a specific path through alerts.

Go ahead and create alerts for your accounts and let us know how you're using them. Have any tips for other Data Lake users? Leave a comment below. Have more ideas for alerts? Reach out to us on <a href="https://aka.ms/adlfeedback">https://aka.ms/adlfeedback</a>.

&nbsp;
<div style="width: 1000px;overflow: hidden">
<div></div>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Process more files than ever and use Parquet with Azure Data Lake Analytics</title>
      <link>https://docs.microsoft.com/archive/blogs/azuredatalake/process-more-files-than-ever-and-use-parquet-with-azure-data-lake-analytics</link>
      <pubDate>Mon, 11 Jun 2018 15:28:22 GMT</pubDate>
      <dc:creator><![CDATA[MRys]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/azuredatalake/?p=10085</guid>
      <description><![CDATA[In a recent release, Azure Data Lake Analytics (ADLA) takes the capability to process large amounts...]]></description>
      <content:encoded><![CDATA[In a <a href="https://blogs.msdn.microsoft.com/azuredatalake/?p=10065" rel="noopener" target="_blank">recent release</a>, Azure Data Lake Analytics (ADLA) takes the capability to process large amounts of files of many different formats to the next level. This blog post is showing you an end to end walk-through of generating many Parquet files from a rowset, and process them at scale with ADLA as well as accessing them from a Spark Notebook.

<strong>Problem Statement</strong>

A common problem our customers face is that they need to process data stored in many thousand files in commonly used structured file formats such as Parquet, either because they ingest many (potentially small) files or because their data is partitioned into many folders and files due to the physical design to achieve scale-out in other systems such as Hadoop's Hive or in Spark (see <a href="http://spark.apache.org/docs/latest/sql-programming-guide.html#partition-discovery" rel="noopener" target="_blank">this description</a> of the Hive Metastore partitioning layout for example). Since ADLA originally was designed to operate on very large files that had internal structure that helped with scale-out, it was only designed to operate on a couple of hundred to about 2000 files, had a file format designed for this internal structure to back the U-SQL tables, and was not providing a mechanism to create files that were dynamically partitioned into different folders and files.

The good news is that ADLA and U-SQL now has added capabilities to address all of these restrictions.

<strong>Process hundreds of thousands of files in a single U-SQL job!</strong>

ADLA <a href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#input-file-set-scales-orders-of-magnitudes-better-finally-released" rel="noopener" target="_blank">increases the scale limit</a> to schematize and process files from the low thousands to several hundred-thousand files in a single U-SQL job with an easy-to-use syntax - so-called file sets. A future blog post will provide more in-depth details on the inner workings and the scale.

In addition, ADLA now supports <a href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#data-driven-output-partitioning-with-output-fileset-is-in-private-preview" rel="noopener" target="_blank">file sets on <code>OUTPUT</code> statements</a> (in private preview) that gives you the ability to dynamically partition your data into different folders and paths with the same easy-to-use file set syntax. This can help you to partition data for further consumption with other analytics engines such as Hive or Spark, or allows you to create separate files for sharing.

<strong>Process Parquet in Azure Data Lake with U-SQL</strong>

We have expanded our built-in support for standard file formats with <a href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#built-in-parquet-extractor-and-outputter-is-in-public-preview" rel="noopener" target="_blank">native Parquet support for extractors and outputters</a> (in public preview). Parquet is one of the major open source structured data formats used when processing data at scale. It enables more efficient data exchange between different analytics engines (that know how to query Parquet files) than CSV. 

<strong>Putting it all together in a simple end-to-end example</strong>

The following simple example brings the high-scale file processing, the new Parquet support, and also the new ability to dynamically partition your data into many files together. Additionally, it also shows how the generated Parquet files can be easily consumed by Azure DataBricks.

<i>Generating thousands of Parquet files</i>

The first step in the example is the schematization of a single, large file called /input/tpch/biglineitems.tbl that contains about 3TB of line item data in a pipe delimited format into a set of Parquet files that are partitioned based on the supplier id associated with a line item.

<pre>
// The following @@FeaturePreviews flags are only needed while the features are in preview
// Special runtimes may be required if the feature is still in private preview
// Contact us at usql at microsoft dot com if you need access to the private preview 

SET @@FeaturePreviews = "EnableParquetUdos:on"; // Public Preview
SET @@FeaturePreviews = "DataPartitionedOutput:on"; // Private Preview (needs special runtime)

@input = 
    EXTRACT order_key long,
            part_key int,
            supp_key int,
            linenumber int,
            quantity int,
            extendedprice double,
            discount double,
            tax double,
            returnflag string,
            linestatus string,.
            ship_date DateTime,
            commit_date DateTime,
            receipt_date DateTime,
            ship_instruct string,
            ship_mode string,
            comment string
    FROM "/input/tpch/biglineitems.tbl"
    USING Extractors.Csv();

OUTPUT @input
TO "/output/parquet/biglineitems/supplier={supp_key}/data.parquet"
USING Outputters.Parquet(
         columnOptions: 
         "1~snappy,2~snappy,3~snappy,4~snappy,5~snappy,6~snappy,7~snappy,8~snappy,9~snappy,10~snappy,11~snappy,
          12~snappy,13~snappy,14~snappy,15~snappy"
      );</pre>

The EXTRACT statement schematizes the pipe delimited file using the built-in text extractor. The subsequent OUTPUT statement generates the supplier files using the new built-in Parquet outputter, using a simple file set path to map the supplier id column into the directory name, thus generating one directory for every distinct supplier id which contains all the line item data for that particular supplier in a Parquet file called <code>data.parquet</code>. This structure is aligned with the partitioning scheme used by Hive and Spark to simplify its later use with these open source analytics engines. The Parquet outputter will compress all columns with the snappy compression and will use the default micro-second resolution for the datetime typed columns (note that for HDInsight's Spark engine, that would need to be changed to milli-seconds). The U-SQL Parquet outputter also supports the gzip and brotli compression formats.

As the following job graph image shows, there is the potential scaling the Parquet generation job out to several thousand nodes:

<img src="https://msdnshared.blob.core.windows.net/media/2018/06/DynamicOutputParquetJobGraph.jpg" alt="" width="1073" height="1181" class="alignnone size-full wp-image-10265" />

In fact, the AU modeler predicts that if the job is submitted with about 8700 AUs, it can finish in about 7 minutes of runtime and with 1540 AUs it would be done in about 10 minutes (the finalization phase is not accounted for in this number):

<img src="https://msdnshared.blob.core.windows.net/media/2018/06/DynamicOutputParquetAUModeler.jpg" alt="" width="1733" height="1195" class="alignnone size-full wp-image-10255" />

For the given data set, this generates 10000 folders, each containing a file of about 13.5 MB to 18.6 MB in size, as the following script determines:
<pre>
// As of time of publishing this blog, this script has to be run with a private runtime to enable 
// fast file sets with Parquet Extractors (otherwise this script will time out during compilation)

SET @@FeaturePreviews = "EnableParquetUdos:on"; 
SET @@FeaturePreview = "InputFileGrouping:on";

// Would be better to use a custom extractor that does not actually parse the file for this use case, 
// since we do not make use of any of the data columns and only need the number of files and their file lengths.

@data = 
    EXTRACT order_key long,
            supp_key int,
            file_size = FILE.LENGTH()
    FROM "/output/parquet/biglineitems/supplier={supp_key}/data.parquet"
    USING Extractors.Parquet();

@result =
    SELECT COUNT(DISTINCT supp_key) AS supp_count,
           MIN(file_size) AS min_file_sz,
           MAX(file_size) AS max_file_sz
    FROM @data;

OUTPUT @result
TO "/output/parquetfiles_stats.csv"
USING Outputters.Csv(outputHeader : true);
</pre>

Since we used the <a href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#input-file-set-uses-less-resources-when-operating-on-many-small-files-is-in-public-preview" rel="noopener" target="_blank">input file set grouping preview</a>, the job actually can execute on 150 nodes instead of the 10000 nodes without it:

<img src="https://msdnshared.blob.core.windows.net/media/2018/06/InputFileGroupingOnParquet.jpg" alt="" width="359" height="277" class="alignnone size-full wp-image-10245" />

This set of Parquet files can now be processed in other U-SQL jobs to prepare other data sets for analysis or be analyzed using one of the other analytics platforms like Azure DataBricks. 

<i>Processing thousands of files in ADLA</i>

The above script already showed you how easy and efficient U-SQL is to scale out its processing over thousands of files. The following U-SQL script queries over the same files and creates a smaller subset of the line item data in a single CSV file for line items that are shipped via air, rail or ship, and for suppliers with the id between 200 and 300. In this case though the query processing will optimize.

<pre>
SET @@FeaturePreviews = "EnableParquetUdos:on";
SET @@FeaturePreviews = "InputFileGrouping:on";

@data = 
    EXTRACT order_key long,
            supp_key int,
            linenumber int,
            quantity int,
            extendedprice double,
            discount double,
            tax double,
            returnflag string,
            linestatus string,
            ship_date DateTime,
            commit_date DateTime,
            receipt_date DateTime,
            ship_instruct string,
            ship_mode string,
            comment string
    FROM "/output/parquet/biglineitems/supplier={supp_key}/data.parquet"
    USING Extractors.Parquet();

@result =
SELECT * FROM @data WHERE supp_key BETWEEN 200 AND 299 AND ship_mode IN("AIR", "RAIL", "SHIP");

OUTPUT @result
TO "/output/suppliers200to299.csv"
USING Outputters.Csv(outputHeader : true);</pre>

Note that this time the EXTRACT statement uses the file set path pattern to query all the files satisfying the pattern. As importantly, the predicate on the <code>supp_key</code> column is being pushed in the EXTRACT expression by the query optimizer, so that only the files for the specified suppliers need to be read, instead of the 10000 files that could match the file set path pattern. The following job graph shows you that it only reads the 100 files:

<img src="https://msdnshared.blob.core.windows.net/media/2018/06/ParquetQueryJobGraph.jpg" alt="" width="621" height="827" class="alignnone size-full wp-image-10275" />

<i>Analyzing U-SQL generated Parquet files with Spark</i>

Now if you want to analyze your Parquet Data using Spark, you can easily do so with an Azure DataBricks notebook. Since Azure Databricks uses a service principal to access the Azure Data Lake Store (ADLS) account, you will need to create or use an existing service principal and provide it at least read and execute permission to the files and folders in the ADLS account. Then you <a href="https://docs.databricks.com/spark/latest/data-sources/azure/azure-datalake.html" rel="noopener" target="_blank">create an Azure DataBricks cluster with the same service principal</a> to access the ADLS account from DataBricks (I used a default cluster for the example). Once this setup is complete, you can create for example a Spark SQL notebook.

In the following example, I create a temporary view on the data set with the following statement

<pre>
CREATE TEMPORARY VIEW LineItemView
USING org.apache.spark.sql.parquet
OPTIONS (
  path "adl://mryscentraladls.azuredatalakestore.net/output/parquet/biglineitems"
)
</pre>

and then run my Spark SQL query:

<pre>
SELECT * FROM LineItemView WHERE supplier BETWEEN 200 AND 300 AND ship_mode IN('AIR', 'RAIL', 'SHIP');
</pre>

As the following screen shot shows, the view creation is taking over 7 minutes, which mainly is spent in scanning the 10000 directories:

<img src="https://msdnshared.blob.core.windows.net/media/2018/06/SparkTempView.jpg" alt="" width="816" height="239" class="alignnone size-full wp-image-10285" />

The query itself get's executed in 24 seconds (subsequent runs will be faster because they will benefit from caching):

<img src="https://msdnshared.blob.core.windows.net/media/2018/06/SparkQueryResult.jpg" alt="" width="2041" height="501" class="alignnone size-full wp-image-10295" />

<strong>Summary</strong>

With its latest release, ADLA is offering some new, unparalleled capabilities for processing files of any formats including Parquet at tremendous scale. For more details on the presented capabilities as well as many more interesting capabilities, please visit the <a href="https://blogs.msdn.microsoft.com/azuredatalake/?p=10065" rel="noopener" target="_blank">Azure Data Lake blog’s release note post</a>.
]]></content:encoded>
    </item>
    <item>
      <title>Azure Data Lake Analytics and U-SQL Spring 2018 Updates: Parquet support, small files, dynamic output, fast file sets, and much more!</title>
      <link>https://docs.microsoft.com/archive/blogs/azuredatalake/azure-data-lake-analytics-and-u-sql-spring-2018-updates-parquet-support-small-files-dynamic-output-fast-file-sets-and-much-more</link>
      <pubDate>Mon, 11 Jun 2018 15:28:14 GMT</pubDate>
      <dc:creator><![CDATA[MRys]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/azuredatalake/?p=10065</guid>
      <description><![CDATA[Hello Azure Data Lake and U-SQL fans and followers.

It is high time for the release notes for all...]]></description>
      <content:encoded><![CDATA[Hello Azure Data Lake and U-SQL fans and followers.

It is high time for the release notes for all the cool features we released over the winter as well as listing all the pending deprecation items and breaking changes. There was so much cool new stuff that it took me several weeks to write the release notes (on top of my day job!) that the next release will probably already be out by the time you read this! I promise that the June release notes will come sooner! :).

Without further ado, here are the <a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md" rel="noopener">Spring 2018 Updates for Azure Data Lake U-SQL and Developer Tooling</a>!

<strong>Supporting data formats of your choice at high scale</strong>

The top items include expanding our built-in support for standard file formats with native <a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#built-in-parquet-extractor-and-outputter-is-in-public-preview" rel="noopener">Parquet</a> support for extractors and outputters (in public preview) and <a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#built-in-orc-extractor-and-outputter-is-in-private-preview" rel="noopener">ORC</a> (in private preview)!

In addition, since the <a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#input-file-set-scales-orders-of-magnitudes-better-finally-released" rel="noopener">fast file set feature</a> now has been generally released, we can consume hundreds of thousands of such files in bulk in a single EXTRACT statement. We will publish a blog at a later date to give you much more detailed information on how this capability helps you to process so many files efficiently in a scalable way.

Important aspects of processing files at scale include:
<ol>
 	<li>the ability to <a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#data-driven-output-partitioning-with-output-fileset-is-in-private-preview" rel="noopener">generate many files from a rowset in a single statement</a>, providing a way to dynamically partition the data for future use with Hadoop or Spark, or to provide individual files for customers. This has been our <a target="_blank" href="https://feedback.azure.com/forums/327234-data-lake/suggestions/10550388-support-dynamic-output-file-names-in-adla" rel="noopener">top customer ask on the ADL Feedback forum</a> --and now it is in private preview!</li>
 	<li>the ability to <a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#input-file-set-uses-less-resources-when-operating-on-many-small-files-is-in-public-preview" rel="noopener">handle many small files</a>. We recommend that you make your files large enough for the processing to be efficient (300MB to 4GB is a good range), but often, your file formats (e.g., images) or data ingestion pipelines (e.g., EventHub archives) are not able to reach that size. Thus, we are adding the ability to group several files into a vertex to increase efficiency and lower cost of your job (we have seen 10 to 30 times improvement in some customer jobs!).</li>
</ol>
You can find a great end-to-end example using several of these important capabilities together in our new <a href="https://azure.microsoft.com/en-us/blog/process-more-files-than-ever-and-use-parquet-with-azure-data-lake-analytics/" rel="noopener" target="_blank">Azure blog post</a> announcing the new release and the <a href="https://blogs.msdn.microsoft.com/azuredatalake/?p=10085" rel="noopener" target="_blank">accompanying detailed walk-through blog post</a>.

<strong>Other cool stuff</strong>

There is so much stuff to discover that I encourage you all to read through the <a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md" rel="noopener">release notes</a> and use the samples that we also have published as a <a target="_blank" href="https://github.com/Azure/usql/tree/master/Examples/Winter-2017-2018-ReleaseNotes" rel="noopener">Visual Studio solution on our U-SQL GitHub site</a>.

Here are a few additional highlights:
<ol>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#adl-tools-for-visualstudio-provides-an-improved-analytics-unit-modeler-to-help-improve-a-jobs-performance-and-cost" rel="noopener">Use the new AU modeler to optimize your jobs cost/performance trade-off!</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#built-in-textcsvtsv-extractors-and-outputters-support-ansiwindows-8-bit-codepage-encodings" rel="noopener">Extract from files that use the <code>Windows</code> code pages!</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#u-sql-adds-job-information-system-variable-jobinfo" rel="noopener">Augment your script with job information through <code>@@JobInfo</code>!</a></li>
 	<li>Light-weight, self-contained script development with <a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#u-sql-adds-c-func-typed-variables-in-declare-statements-named-lambdas" rel="noopener">in-script C# named lambdas</a> and <a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#u-sql-adds-temporary-script-bound-meta-data-objects-with-declare-statements" rel="noopener">script-scoped U-SQL objects!</a></li>
</ol>
Thanks to all of you who continue to volunteer to test the preview features and provide us valuable feedback. We are looking forward to seeing you use all the new cool stuff.

<b>Make sure that you update your scripts that are affected by the future deprecations and breaking changes!</b>

Please <a href="mailto:usql@microsoft.com">contact us</a> or leave a comment below if you have feedback on this or other features.

Here is the list of topics with links to the detailed release notes:
<ul>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#pending-and-upcoming-deprecations-and-breaking-changes" rel="noopener">Pending and Upcoming Deprecations and Breaking Changes</a>
<ul>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#u-sql-jobs-will-introduce-an-upper-limit-for-the-number-of-table-backing-files-being-read" rel="noopener">U-SQL jobs will introduce an upper limit for the number of table-backing files being read</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#built-in-extractors-will-change-mapping-of-empty-fields-from-zero-length-string-to-null-with-quoting-enabled" rel="noopener">Built-in extractors will change mapping of empty fields from zero-length string to null with quoting enabled</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#disallow-declare-external-inside-packages-procedures-and-functions" rel="noopener">Disallow `DECLARE EXTERNAL` inside packages, procedures and functions</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#removal-of-undocumented-use-of-cluster--clustered-by-in-create-index-and-create-table" rel="noopener">Removal of undocumented use of `CLUSTER` | `CLUSTERED BY` in `CREATE INDEX` and `CREATE TABLE`</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#calling-static-members-of-types-in-a-SELECT-expression-that-also-references-a-column-having-the-same-name-as-the-type-will-need-to-fully-qualify-the-type-name-or-rename-the-column" rel="noopener">Calling static members of types in a `SELECT` expression that also references a column having the same name as the type will need to fully qualify the type name or rename the column</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#disallow-u-sql-identifiers-in-c-delegate-bodies-in-scripts" rel="noopener">Disallow U-SQL identifiers in C# delegate bodies in scripts</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#strengthening-of-read-after-dml-check" rel="noopener">Strengthening of Read after DML check</a></li>
</ul>
</li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#breaking-changes" rel="noopener">Breaking Changes</a>
<ul>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#the-following-previously-announced-deprecation-items-are-now-removed" rel="noopener">The following previously announced deprecation items are now removed</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#api-changes-for-the-cognitive-extension-libraries" rel="noopener">API changes for the cognitive extension libraries</a></li>
</ul>
</li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#major-u-sql-bug-fixes-performance-and-scale-improvements" rel="noopener">Major U-SQL Bug Fixes, Performance and Scale Improvements</a>
<ul>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#input-file-set-scales-orders-of-magnitudes-better-finally-released" rel="noopener">Input File Set scales orders of magnitudes better</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#u-sql-python-r-and-cognitive-extensions-bug-fixes-and-performance-and-scale-improvements" rel="noopener">U-SQL Python, R and Cognitive Extensions bug fixes and performance and scale improvements</a></li>
</ul>
</li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#u-sql-preview-features" rel="noopener">U-SQL Preview Features</a>
<ul>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#input-file-set-uses-less-resources-when-operating-on-many-small-files-is-in-public-preview" rel="noopener">Input File Set uses less resources when operating on many small files (Public Preview)</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#built-in-parquet-extractor-and-outputter-is-in-public-preview" rel="noopener">Built-in Parquet Extractor and Outputter (Public Preview)</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#automatic-gzip-compression-on-output-statement-is-in-public-preview" rel="noopener">Automatic GZip compression on `OUTPUT` statement (Public Preview)</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#built-in-orc-extractor-and-outputter-is-in-private-preview" rel="noopener">Built-in ORC Extractor and Outputter (Private Preview)</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#data-driven-output-partitioning-with-output-fileset-is-in-private-preview" rel="noopener">Data-driven Output Partitioning with `OUTPUT` fileset (Private Preview)</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#a-limited-flexible-schema-feature-for-u-sql-table-valued-function-parameters-is-now-available-for-preview-requires-opt-in" rel="noopener">A limited flexible-schema feature for U-SQL table-valued function parameters is now available for private preview</a></li>
</ul>
</li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#new-u-sql-capabilities" rel="noopener">New U-SQL capabilities</a>
<ul>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#u-sql-adds-job-information-system-variable-jobinfo" rel="noopener">U-SQL adds job information system variable `@@JOBINFO`</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#u-sql-adds-support-for-computed-file-property-columns-on-extract" rel="noopener">U-SQL adds support for computed file property columns on `EXTRACT`</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#diagnosticstream-support-in-net-user-code" rel="noopener">DiagnosticStream support in .Net User-code</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#built-in-textcsvtsv-extractors-and-outputters-support-ansiwindows-8-bit-codepage-encodings" rel="noopener">Built-in Text/Csv/Tsv Extractors and Outputters support ANSI/Windows 8-bit codepage encodings</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#u-sql-supports-ansi-sql-case-expression" rel="noopener">U-SQL supports ANSI SQL `CASE` expression</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#u-sql-adds-c-func-typed-variables-in-declare-statements-named-lambdas" rel="noopener">U-SQL adds C# `Func`-typed variables in `DECLARE` statements (named lambdas)</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#u-sql-adds-temporary-script-bound-meta-data-objects-with-declare-statements" rel="noopener">U-SQL adds temporary, script-bound meta data objects with `DECLARE` statements</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#the-order-by-fetch-clause-can-be-used-with-all-query-expressions" rel="noopener">The `ORDER BY FETCH` clause can be used with all query expressions</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#the-extract-expressions-schema-can-be-specified-with-a-table-type" rel="noopener">The EXTRACT expression's schema can be specified with a table-type</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#the-extract-reduce-and-combine-expressions-now-support-a-sorted-by-assertion" rel="noopener">The `EXTRACT`, `REDUCE` and `COMBINE` expressions now support a `SORTED BY` assertion</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#the-required-clause-for-udo-invocations-now-allows-none" rel="noopener">The `REQUIRED` clause for UDO invocations now allows `NONE`</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#the-extract-expressions-now-support-the-required-clause-to-support-column-pruning-in-user-defined-extractors" rel="noopener">The `EXTRACT` expressions now support the `REQUIRED` clause to support column pruning in user-defined extractors</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#u-sql-adds-compile-time-user-errors-and-warnings" rel="noopener">U-SQL adds compile-time user errors and warnings</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#u-sql-cognitive-library-additions" rel="noopener">U-SQL Cognitive Library additions</a></li>
</ul>
</li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#azure-data-lake-tools-for-visual-studio-new-capabilities" rel="noopener">Azure Data Lake Tools for Visual Studio New Capabilities</a>
<ul>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#adl-tools-for-visualstudio-provides-an-improved-analytics-unit-modeler-to-help-improve-a-jobs-performance-and-cost" rel="noopener">ADL Tools for VisualStudio provides an improved Analytics Unit modeler to help improve a job's performance and cost</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#job-submissions-simple-interface-now-makes-it-easier-to-change-the-allocated-aus" rel="noopener">Job Submission's simple interface now makes it easier to change the allocated AUs</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#the-stage-tool-tip-is-simplified-and-makes-it-easier-to-find-the-vertex-operator-view" rel="noopener">The stage tool tip is simplified and makes it easier to find the Vertex Operator View</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#improved-visualization-of-the-vertex-operator-view-inside-a-vertex" rel="noopener">Improved visualization of the job execution graph inside a vertex</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#the-job-stage-graph-and-job-execution-graph-now-indicates-if-the-stage-contains-user-defined-operators-and-what-language-they-have-been-authored-in" rel="noopener">The job stage graph and job execution graph now indicates if the stage contains user-defined operators and what language they have been authored in</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#new-data-tab-for-enumerating-all-input-and-output-data" rel="noopener">New "Data" tab for enumerating all input and output data</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#job-view-includes-a-link-to-the-diagnostic-folder" rel="noopener">Job View includes a link to the diagnostic folder</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#u-sql-compilation-errors-are-now-shown-in-the-error-list-window" rel="noopener">U-SQL compilation errors are now shown in the "Error List" window</a></li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#u-sql-project-supports-msbuild" rel="noopener">U-SQL Project supports MSBuild</a></li>
</ul>
</li>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#azure-portal-updates" rel="noopener">Azure Portal Updates</a>
<ul>
 	<li><a target="_blank" href="https://github.com/Azure/AzureDataLake/blob/master/docs/Release_Notes/2018/2018_Spring/USQL_Release_Notes_2018_Spring.md#the-portal-provides-an-improved-analytics-unit-modeler-to-help-improve-a-jobs-performance-and-cost" rel="noopener">The portal provides an improved Analytics Unit modeler to help improve a job's performance and cost</a></li>
</ul>
</li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>Get started with U-SQL: It’s easy!</title>
      <link>https://docs.microsoft.com/archive/blogs/azuredatalake/get-started-with-u-sql-its-easy</link>
      <pubDate>Sat, 26 May 2018 00:05:16 GMT</pubDate>
      <dc:creator><![CDATA[Ajeta Singhal]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/azuredatalake/?p=10145</guid>
      <description><![CDATA[Azure Data Lake Analytics combines declarative and imperative concepts in the form of a new language...]]></description>
      <content:encoded><![CDATA[Azure Data Lake Analytics combines declarative and imperative concepts in the form of a new language called <strong>U-SQL</strong>. The idea of learning a new language is daunting. Don’t worry!  <strong>U-SQL is easy to learn</strong>. You can learn the vast majority of the language in a single day. If you are familiar with SQL or languages like C# or Java, you will find that learning U-SQL is natural and that you will be productive incredibly fast.

A common question we get is “How can I get started with U-SQL?”.  This blog will show you all the core steps you need to get ramped up on U-SQL.
<h1><span style="margin: 0px;line-height: 107%;font-family: 'Segoe UI',sans-serif;font-size: 14pt"><span style="color: #2e74b5">What is U-SQL?</span></span><span style="margin: 0px;line-height: 107%;font-family: 'Segoe UI',sans-serif;font-size: 14pt"></span></h1>
U-SQL is the big data query language and execution framework in the Azure Data Lake Analytics. U-SQL uses familiar SQL concepts and language to scale out your custom code (.NET/C#/Python) from Gigabyte to Petabyte scale.  U-SQL offers the usual big data processing concepts such as “schema on reads”, custom processors, and reducers. The language lets you query and combine data from multiple data sources including Azure Data Lake Storage, Azure Blob Storage, Azure SQL DB, Azure SQL Data Warehouse and SQL Server instances running on Azure VMs.
<h1><span style="margin: 0px;line-height: 107%;font-family: 'Segoe UI',sans-serif;font-size: 14pt"><span style="color: #2e74b5">Step 1: Read the U-SQL Tutorial</span></span></h1>
The <a href="http://aka.ms/usqltutorial">U-SQL tutorial</a> is best place to start. It will lead you step-by-step, incrementally through the language and tools. You don’t need an Azure subscription or an ADLA for this step. The tutorial teaches you how to run U-SQL on your own Window box. Follow through this doc. This step will only take a day or two and afterwards you will have a solid grasp on most of the U-SQL code you would ever need to write in practice.
<h1><span style="margin: 0px;line-height: 107%;font-family: 'Segoe UI',sans-serif;font-size: 14pt"><span style="color: #2e74b5">Step 2: Submit a U-SQL job through the Azure Portal</span></span></h1>
At this point, you’ve got a sense of the language. Now we explore the mechanics of using the language with Azure. In this step you will learn how to submit a U-SQL script to an ADLA account and monitor its progress. Read the <a href="https://docs.microsoft.com/en-us/azure/data-lake-analytics/data-lake-analytics-get-started-portal">Getting Started guide</a>. The guide will walk through all the steps needed. As an alternative, you could also <a href="https://www.youtube.com/watch?v=lTvC6kWaM7w">watch this YouTube video</a>.
<h1><span style="margin: 0px;line-height: 107%;font-family: 'Segoe UI',sans-serif;font-size: 14pt"><span style="color: #2e74b5">Step 3: Run some of the U-SQL samples in the Azure Portal</span></span></h1>
Since the language is still new to you at this point, you can take advantage of the sample scripts available in the Azure Portal. These samples cover some very common U-SQL scenarios. We find that many users prefer starting with one of our existing samples rather than starting with an empty U-SQL script. Below are the steps you can follow to start with existing samples in the portal:
<ul>
 	<li>Go to your ADLA account</li>
 	<li>Click on <strong>Sample Scripts</strong> (on the left, or on the top)</li>
 	<li>If you are prompted to install sample data, do so. It will copy a few MBs of sample data into your ADLS account</li>
 	<li>Select any sample – for example <strong>Query a TSV file</strong> and click <strong>Submit<img width="1602" height="1011" class="alignnone size-full wp-image-10165" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/05/Sample-scripts.png" /></strong></li>
</ul>
<h2><span style="margin: 0px;line-height: 107%;font-family: 'Segoe UI',sans-serif;font-size: 14pt"><span style="color: #2e74b5">Step 4: Submit a U-SQL Job with Data Lake Tools for Visual Studio</span></span></h2>
<span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><span style="color: #000000">In step 1, you used Visual Studio to run U-SQL scripts on your own machine. In steps 2 and 3 we switched to using the Azure portal and working with an ADLA account. Now we will return to Visual Studio and submit U-SQL scripts to an ADLA account in Azure. Read this </span><a href="https://docs.microsoft.com/en-us/azure/data-lake-analytics/data-lake-analytics-data-lake-tools-get-started">Getting Started guide</a><span style="color: #000000"> and follow the steps to run U-SQL script using Visual Studio .</span></span>
<h1><span style="margin: 0px;line-height: 107%;font-family: 'Segoe UI',sans-serif;font-size: 14pt"><span style="color: #2e74b5">Step 5: Learn how a U-SQL script executes</span></span></h1>
<span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><span style="color: #000000">So far, the blog post was focused on using the U-SQL language. Now you should explore what is happening under the covers when a U-SQL script runs. Understanding U-SQL query execution is a MUST DO task for any U-SQL developer. This will help you immensely when debugging problems and optimizing your code to scale.</span></span>

<span style="margin: 0px;line-height: 107%;font-family: 'Segoe UI',sans-serif;font-size: 11pt"><span style="color: #000000">Watch video: </span><a href="https://www.youtube.com/watch?v=MP2oiwT5S7I">U-SQL Batch Query Execution</a></span>

<img width="500" height="283" class="alignnone size-medium wp-image-10175" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/05/Job-execution-500x283.png" />

&nbsp;

<span style="margin: 0px;color: #2e74b5;line-height: 107%;font-family: 'Segoe UI',sans-serif;font-size: 14pt">Step </span><span style="margin: 0px;color: #2e75b6;line-height: 107%;font-family: 'Segoe UI',sans-serif;font-size: 14pt">6</span><span style="margin: 0px;color: #2e74b5;line-height: 107%;font-family: 'Segoe UI',sans-serif;font-size: 14pt">: C# code behind in Visual Studio</span><span style="margin: 0px;color: #2e75b6;line-height: 107%;font-family: 'Segoe UI',sans-serif;font-size: 14pt"></span>

<span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><span style="color: #000000">U-SQL makes it easy to use .NET code. If you are a C# developer, our Visual Studio tooling makes it especially easy to reuse C# code directly in your U-SQL scripts through a feature called “U-SQL C# Code-Behind”</span></span>

<span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><span style="color: #000000">Watch video: </span></span><a href="https://www.youtube.com/watch?v=VnOdSVsoioY"><span style="margin: 0px;font-family: 'Segoe UI',sans-serif">C# Code-Behind for U-SQL in Visual Studio</span></a><span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><span style="color: #000000"> </span></span>

<img width="500" height="324" class="alignnone size-medium wp-image-10185" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/05/6.1-500x324.png" />

<span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><span style="color: #000000">U-SQL Script calling a method in C# Code-Behind:</span></span>

<img width="500" height="379" class="alignnone size-medium wp-image-10195" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/05/6.2-500x379.png" />

<span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><span style="color: #000000">And here’s what’s in the C# Code-behind:</span></span>

<img width="500" height="254" class="alignnone size-medium wp-image-10205" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/05/6.3-500x254.png" />

&nbsp;

<span style="margin: 0px;color: #2e74b5;line-height: 107%;font-family: 'Segoe UI',sans-serif;font-size: 14pt">Step </span><span style="margin: 0px;color: #2e75b6;line-height: 107%;font-family: 'Segoe UI',sans-serif;font-size: 14pt">7</span><span style="margin: 0px;color: #2e74b5;line-height: 107%;font-family: 'Segoe UI',sans-serif;font-size: 14pt">: User code debugging in Visual Studio</span>

<span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><span style="color: #000000">One of the challenges in running your code in a distributed fashion is that it typically is very hard to track down and reproduce failures. Our Visual Studio tooling has simplified the experience. For example debugging a .NET exception thrown by your code that is being used in a U-SQL script, is just as easy as debugging that exception with a normal C# project on your machine.</span></span>

<span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><span style="color: #000000">Watch video: </span><a href="https://www.youtube.com/watch?v=3enkNvprfm4">Debug C# code errors in failed U-SQL jobs</a></span>

<span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><span style="color: #000000"> </span></span>

<span style="margin: 0px;color: #2e75b6;line-height: 107%;font-family: 'Segoe UI',sans-serif;font-size: 14pt">Step 8: Learn about the AU Analyzer</span>

<span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><span style="color: #000000">As you begin to use U-SQL scripts against larger amounts of data., you are going to eventually wonder about how to optimize the number of Analytics Units (AUs) for your U-SQL jobs. Fortunately, we’ve built a wonderful tool called the AU Analyzer to help you perform these optimizations. </span></span>

<span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><span style="color: #000000">Watch video: </span><a href="https://www.youtube.com/watch?v=cYLMJ5gHGSI">AU analysis for U-SQL jobs</a></span>

&nbsp;

<span style="margin: 0px;color: #2e74b5;line-height: 107%;font-family: 'Segoe UI',sans-serif;font-size: 14pt">Step 9: Learn how to save money and control costs</span>

<span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><span style="color: #000000">As you start working with big data, you will need to think about all the ways in which you can control your costs. Read our cost saving guides here: </span><a href="http://aka.ms/adlasavemoney">http://aka.ms/adlasavemoney</a></span>

&nbsp;

<span style="margin: 0px;color: #2e75b6;line-height: 107%;font-family: 'Segoe UI',sans-serif;font-size: 14pt">Step 10: Use GitHub Samples</span>

<span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><span style="color: #000000">If you are facing a problem that needs solving, likely someone else is facing a similar one too.<span>  </span>We use GitHub to share code samples and more with the U-SQL community. We get popular questions on a range of topics. See samples for specific topics below:</span></span><span style="margin: 0px;font-family: 'Segoe UI',sans-serif"></span>
<ul>
 	<li><span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><a href="https://github.com/Azure/usql/tree/master/Examples/JsonSample"><span>JSON Sample</span></a></span></li>
 	<li><span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><a href="https://github.com/Azure/usql/tree/master/Examples/PythonExamples">Python Example</a></span><span style="margin: 0px;font-family: 'Segoe UI',sans-serif"></span></li>
 	<li><span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><a href="https://github.com/Azure/usql/tree/master/Examples/R_Extensions/PredictLinearModel"><span>R Sample</span></a></span></li>
 	<li><span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><a href="https://github.com/Azure/usql/tree/master/Examples/Builtin-UDOs/Builtin-UDOs"><span>UDO Sample</span></a></span></li>
</ul>
You can find more samples here <a href="https://github.com/Azure/usql">https://github.com/Azure/usql</a>. To download the Git repo, just click <strong>Clone or download</strong>, then <strong>Download ZIP</strong>.

<img width="273" height="157" class="alignnone size-full wp-image-10215" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/05/GitHub.png" />

&nbsp;

<span style="margin: 0px;color: #2e74b5;line-height: 107%;font-family: 'Segoe UI',sans-serif;font-size: 14pt">Advanced Learning</span>

<span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><span style="color: #000000">Read documentation to understand advanced concepts</span></span><span style="margin: 0px;font-family: 'Segoe UI',sans-serif"></span>
<ul>
 	<li><span><span style="color: #000000"><span style="font: 7pt 'Times New Roman';margin: 0px"> </span></span></span><span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><a href="https://docs.microsoft.com/en-us/azure/data-lake-analytics/data-lake-analytics-u-sql-develop-user-defined-operators"><span>How to define and use a UDO in U-SQL</span></a></span></li>
 	<li><span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><a href="https://docs.microsoft.com/en-us/azure/data-lake-analytics/data-lake-analytics-u-sql-python-extensions"><span>Python in U-SQL</span></a></span></li>
 	<li><span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><a href="https://docs.microsoft.com/en-us/azure/data-lake-analytics/data-lake-analytics-u-sql-r-extensions"><span>R in U-SQL</span></a><span></span></span></li>
 	<li><span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><a href="https://www.youtube.com/watch?v=lTvC6kWaM7w"><span>Submitting and Monitoring U-SQL Jobs in the Azure Portal</span></a><span></span></span></li>
 	<li><span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><a href="https://docs.microsoft.com/en-us/azure/data-lake-analytics/data-lake-analytics-u-sql-programmability-guide">USQL programmability guide</a></span></li>
 	<li><span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><a href="https://microsoft.sharepoint.com/teams/DPGBigDataTeam/Documents/GTM/BLOGS/WORKING%20DRAFTS%20BLOGS/usql.io/">usql.io</a><span style="color: #000000"> gives you tutorials, samples and links to developer tools</span></span></li>
 	<li><span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><a href="https://msdn.microsoft.com/en-us/azure/data-lake-analytics/u-sql/u-sql-language-reference">USQL-Reference</a><span style="color: #000000"> </span></span><span style="color: #000000"><span style="margin: 0px;font-family: 'Segoe UI',sans-serif">contains </span><span style="margin: 0px;font-family: 'Segoe UI',sans-serif">reference documentation</span></span></li>
</ul>
&nbsp;

<span style="margin: 0px;color: #2e74b5;line-height: 107%;font-family: 'Segoe UI',sans-serif;font-size: 14pt">Become part of the U-SQL community!</span><span style="margin: 0px;font-family: 'Segoe UI',sans-serif"></span>

<span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><span style="color: #000000">We look forward to welcoming you to our growing community of U-SQL users. We love to hear your feedback. Especially let us know when U-SQL is easing your way to write a function that you couldn’t otherwise do or allows you to perform your analytics tasks in a compressed time. Go ahead and run a U-SQL job and share your experiences with us here: </span></span><a href="http://aka.ms/adlfeedback"><span style="background: white;margin: 0px;font-family: 'Segoe UI',sans-serif">http://aka.ms/adlfeedback</span></a><span style="margin: 0px;font-family: 'Segoe UI',sans-serif"></span>

<span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><span style="color: #000000">If you have any question regarding U-SQL, you can ask here </span></span><span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><a href="https://stackoverflow.com/questions/tagged/u-sql">U-SQL Stack overflow</a><span style="color: #000000"> </span></span><span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><span style="color: #000000">or </span></span><span style="margin: 0px;font-family: 'Segoe UI',sans-serif"><a href="https://social.msdn.microsoft.com/Forums/azure/en-US/home?forum=AzureDataLake">Azure Data Lake MSDN</a><span style="color: #000000">.</span></span>

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>Use AU Analyzer for faster, lower cost Data Lake Analytics</title>
      <link>https://docs.microsoft.com/archive/blogs/azuredatalake/use-au-analyzer-for-faster-lower-cost-data-lake-analytics</link>
      <pubDate>Tue, 15 May 2018 18:43:32 GMT</pubDate>
      <dc:creator><![CDATA[Matthew Hicks]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/azuredatalake/?p=9985</guid>
      <description><![CDATA[Do you use Data Lake Analytics and wonder how many Analytics Units your jobs should have been...]]></description>
      <content:encoded><![CDATA[Do you use Data Lake Analytics and wonder how many Analytics Units your jobs should have been assigned? Do you want to see if your job could consume a little less time or money? The recently-announced AU Analyzer tool can help you today!

See our recent <span><a href="https://blogs.msdn.microsoft.com/azuredatalake/2018/03/30/using-the-first-job-run-to-optimize-subsequent-runs-with-azure-data-lake-job-au-analyzer/">announcement of the AU Analyzer</a></span>, available in both Visual Studio and the Azure Portal. Using this feature with <span><a href="https://blogs.msdn.microsoft.com/azuredatalake/2018/01/08/how-to-save-money-and-control-costs-with-azure-data-lake-analytics/">our cost-saving guide</a></span> will help you get the most out of your Data Lake Analytics spend.
<h2>Optimize for cost</h2>
To see a simple recommendation for how much your job may cost in a balanced setting, click on the <strong>Balanced</strong> recommendation in the AU Analysis tab for your job. You’ll see the estimated running time and cost of your job if you assign the specified number of AUs, barring other changes to the job or any of its dependencies.

<img src="https://msdnshared.blob.core.windows.net/media/2018/05/recommendations02-e1525998458165.png" alt="" width="200" height="207" class="alignnone size-full wp-image-10005" />
<h2>Optimize for speed</h2>
To see an estimate of how fast your job can reasonably run, click on the <strong>Fast</strong> recommendation. Just as before, you’ll see the estimated running time and cost of your job if you assign the specified number of AUs, barring other changes to the job or any of its dependencies.

<img src="https://msdnshared.blob.core.windows.net/media/2018/05/recommendations03-e1525998468918.png" alt="" width="200" height="208" class="alignnone size-full wp-image-10015" />
<h2>Customize it!</h2>
Try out different scenarios by assigning a custom number of Analytics Units by clicking the <strong>Custom</strong> card in the AU Analysis tab for your job and moving the slider.

<img src="https://msdnshared.blob.core.windows.net/media/2018/05/recommendations04-e1525998479584.png" alt="" width="200" height="208" class="alignnone size-full wp-image-10025" />

For the following job, it looks like <strong>Balanced</strong> is the best option for me. The next time I submit this job, I’ll choose 185 AUs, and spend 3.63 USD (13%) more to reduce my job’s running time by 16 minutes.

<img src="https://msdnshared.blob.core.windows.net/media/2018/05/recommendations01-e1525998427430.png" alt="" width="500" height="368" class="alignnone size-full wp-image-9995" />
<h2>How does the AU Analyzer work?</h2>
The AU Analyzer looks at all the vertices (or nodes) in your job, analyzes how long they ran and their dependencies, then models how long the job might run if a certain number of vertices could run at the same time. Each vertex may have to wait for input or for its spot in line to run. The AU Analyzer isn't 100% accurate, but it provides general guidance to help you choose the right number of AUs for your job.

You’ll notice that there are diminishing returns when assigning more AUs, mainly because of input dependencies and the running times of the vertices themselves. So, a job with 10,000 total vertices likely won’t be able to use 10,000 AUs at once, since some will have to wait for input or for dependent vertices to complete.

In the graph below, here’s what the modeler might produce, when considering the different options. Notice that when the job is assigned 1427 AUs, assigning more won’t reduce the running time. 1427 is the “peak” number of AUs that can be assigned.

<img src="https://msdnshared.blob.core.windows.net/media/2018/05/recommendations05-e1525998495332.png" alt="" width="400" height="279" class="alignnone size-full wp-image-10035" />
<h2>How do we calculate the recommendations?</h2>
We generate the <strong>Balanced</strong> recommendation by first modeling the job’s running time multiple times for various selections of AUs. We then walk through each of the options, from 1 AU upwards, and identify the option which, compared with one fewer AU, offers a performance boost equal to or greater than the increase in cost.

The approach for <strong>Fast</strong> recommendation is similar. We walk through each of the same options, from 1 AU upwards, and identify the option which, compared with one fewer AU, offers a performance boost equal to or greater than <em>half</em> the increase in cost.

To make sure we're giving you quality recommendations, we may update the recommendation logic for Balanced and Fast and add more recommendations in the future.

For example, if increasing from 374 AUs to 375 AUs might give a 3% speed boost for only a 3% increase in cost, we recommend 6 AUs as the <strong>Balanced</strong> option. If increasing from 825 AUs to 826 AUs might give a 2% speed boost for a 4% increase in cost, we recommend 826 AUs as the <strong>Fast</strong> option.

<img src="https://msdnshared.blob.core.windows.net/media/2018/05/recommendations06-e1525998503584.png" alt="" width="400" height="279" class="alignnone size-full wp-image-10045" />
<h2>Try this feature today!</h2>
Give this feature a try and let us know your feedback in the comments.

Interested in any other samples, features, or improvements? Let us know and vote for them on our <a href="https://aka.ms/adlfeedback">UserVoice page</a>!]]></content:encoded>
    </item>
    <item>
      <title>Keeping Data Lake Costs Under Control: Creating Alerts for AUs Usage Thresholds.</title>
      <link>https://docs.microsoft.com/archive/blogs/azuredatalake/keeping-data-lake-costs-under-control-creating-alerts-for-aus-usage-thresholds</link>
      <pubDate>Mon, 23 Apr 2018 21:27:45 GMT</pubDate>
      <dc:creator><![CDATA[José Lara [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/azuredatalake/?p=9655</guid>
      <description><![CDATA[Have you ever been surprised by a larger-than-expected monthly Azure Data Lake Analytics bill?...]]></description>
      <content:encoded><![CDATA[Have you ever been surprised by a larger-than-expected monthly Azure Data Lake Analytics bill? Creating alerts using Log Analytics will help you know when the bill is growing more than it should. <strong>In this post, I will show you how to create an alert that emails a message whenever the total AUs assigned to jobs exceeds a daily threshold. </strong>– it’s easy to get started!

This is another post in a series on <a href="https://blogs.msdn.microsoft.com/azuredatalake/2018/01/08/how-to-save-money-and-control-costs-with-azure-data-lake-analytics/">how to save money and reduce costs with Azure Data Lake Analytics</a>.
<h2><strong>Connect your Azure Data Lake Analytics account to Log Analytics</strong></h2>
Follow the steps in our <a href="https://blogs.msdn.microsoft.com/azuredatalake/2018/02/06/struggling-to-get-insights-for-your-azure-data-lake-store-azure-log-analytics-can-help/">previous blog post on Log Analytics</a> to connect your accounts and start collecting usage and diagnostics logs – in this specific case, make sure you select the <strong><em>Audit</em></strong> logs to create this alert:

[caption id="attachment_9665" align="alignnone" width="561"]<img src="https://msdnshared.blob.core.windows.net/media/2018/04/2018-04_ADLA-AU-Alerts_001.png" alt="" class="size-full wp-image-9665" width="561" height="246" /> <em>Selecting the type of event logs to share to Log Analytics</em>[/caption]

&nbsp;
<h2><strong>Create the query: Azure Data Lake Analytics AUs assigned
</strong></h2>
A simple Azure Log Analytics query showing the recently completed jobs is:
<pre>search *
 | where Type == "AzureDiagnostics"
 | where ResourceProvider == "MICROSOFT.DATALAKEANALYTICS"
 | where OperationName == "JobEnded</pre>
[caption id="attachment_9895" align="alignnone" width="353"]<img src="https://msdnshared.blob.core.windows.net/media/2018/04/2018-04_ADLA-AU-Alerts_002e.png" alt="" class="size-full wp-image-9895" width="353" height="528" /> <em>Log Analytics entry for a completed Azure Data Lake Analytics job</em>[/caption]

&nbsp;

The attribute <strong>Parallelism_d</strong> in the previous query, contains the total number of AUs assigned by the user on a job that has ended (regardless of status). The following query aggregates the results on a 1-day interval and sums all the values of the <strong>Parallelism_d</strong> column, returning the total AUs assigned by users to jobs that ended. <strong>Note that this is not the total number of AU-hours </strong>(we will cover that on a later blog post).

We will use this query to power our Log Analytics alert:
<pre>search *
 | where Type == "AzureDiagnostics"
 | where ResourceProvider == "MICROSOFT.DATALAKEANALYTICS"
 | where OperationName == "JobEnded"
 | summarize AggregatedValue = sum(Parallelism_d)  by bin(TimeGenerated, 1d)</pre>
[caption id="attachment_9765" align="alignnone" width="609"]<img src="https://msdnshared.blob.core.windows.net/media/2018/04/2018-04_ADLA-AU-Alerts_003b.png" alt="" class="size-full wp-image-9765" width="609" height="101" /> <em>Log Analytics query that sums all the AUs assigned by users for jobs in a day</em>[/caption]

&nbsp;
<h2>Creating the Log Analytics alert</h2>
If you want to see the step-by-step guide to create a new Log Analytics alert, <a href="https://blogs.msdn.microsoft.com/azuredatalake/2018/04/10/simple-trick-to-stay-on-top-of-your-azure-data-lake-create-alerts-using-log-analytics/">check out our recent blog post on creating Log Analytics Alerts</a>.

For the alert signal logic, use the following values:
<ul>
 	<li>Use the query from the previous step</li>
 	<li>Set the sum of AUs to <strong>50 </strong>as the threshold (you can use any number that reflects your own threshold)</li>
 	<li>Set the trigger to <strong>0</strong>: whenever the threshold is breached</li>
 	<li>Set the period and frequency for 24 hours.</li>
</ul>
[caption id="attachment_9755" align="alignnone" width="435"]<img src="https://msdnshared.blob.core.windows.net/media/2018/04/2018-04_ADLA-AU-Alerts_008.png" alt="" class="size-full wp-image-9755" width="435" height="705" /> Alert signal logic and settings[/caption]

&nbsp;

After one or more jobs exceed the AU threshold set in the alert within a 24 hour period, the users/teams in the alert action group will get an email alert:

[caption id="attachment_9865" align="alignnone" width="722"]<img src="https://msdnshared.blob.core.windows.net/media/2018/04/2018-04_ADLA-AU-Alerts_016.png" alt="" class="size-full wp-image-9865" width="722" height="752" /> <em>Alert notification email</em>[/caption]

&nbsp;
<h2>Conclusion</h2>
In this blog post I showed you how to set up and alert whenever a specific threshold of AUs is exceeded. This usage alert can directly help to manage costs and understand the Data Lake Analytics usage in your organization - create your notifications and share your experiences with us!

In future posts, we'll cover other useful alerts and notifications that can be set up for your Azure Data Lake Analytics and Data Lake Store accounts. Go ahead and set your own usage alerts -- it's easy to get started!]]></content:encoded>
    </item>
    <item>
      <title>Simple Trick to Stay on top of your Azure Data Lake: Create Alerts using Log Analytics</title>
      <link>https://docs.microsoft.com/archive/blogs/azuredatalake/simple-trick-to-stay-on-top-of-your-azure-data-lake-create-alerts-using-log-analytics</link>
      <pubDate>Tue, 10 Apr 2018 00:27:11 GMT</pubDate>
      <dc:creator><![CDATA[José Lara [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/azuredatalake/?p=9915</guid>
      <description><![CDATA[If you manage one or more Azure Data Lake accounts, do you ever find it hard to stay on top of...]]></description>
      <content:encoded><![CDATA[If you manage one or more Azure Data Lake accounts, do you ever find it hard to stay on top of everything that is happening? Ever feel the need to know more about them? Are you regularly asking yourself any or all of these questions:
<ul>
 	<li>What are our most expensive jobs ?</li>
 	<li>When was a new data folder created in [path]?</li>
 	<li>When did a file get deleted from our [data/compliance/telemetry/other] folder?</li>
</ul>
<strong>Creating Azure Log Analytics alerts for your Azure Data Lake accounts can help you know when specific events happen, or when a metric reaches a defined threshold.</strong> In this post I'll show you how to reduce the level of unknowns when working with Azure Data Lake using Azure Log Analytics alerts - it's easy to get started:
<h2><strong>Connect your Azure Data Lake account to Log Analytics</strong></h2>
Follow the steps in our <a href="https://blogs.msdn.microsoft.com/azuredatalake/2018/02/06/struggling-to-get-insights-for-your-azure-data-lake-store-azure-log-analytics-can-help/">previous blog post on Log Analytics</a> to connect your accounts and start collecting usage and diagnostics logs.
<h2><strong>Create the Log Analytics Alert</strong></h2>
Open <strong>Log Analytics</strong>, and navigate to the <strong>Alerts </strong>section towards the bottom of the table of contents.

[caption id="attachment_9705" align="alignnone" width="216"]<img class="size-full wp-image-9705" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/04/2018-04_ADLA-AU-Alerts_004.png" height="90" width="216" /> <em>Figure 1: Log Analytics - Alerts</em>[/caption]

&nbsp;

In the Log Analytics Alert blade, click on <strong>New Alert Rule</strong> to create a new alert.

[caption id="attachment_9715" align="alignnone" width="838"]<img class="size-full wp-image-9715" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/04/2018-04_ADLA-AU-Alerts_005.png" height="437" width="838" /> <em>Figure 2: Log Analytics - New alert</em>[/caption]

&nbsp;

The first part of the rule, the target, should already be selected – using the current Log Analytics account. For the second part – the criteria, click the button to add the conditions for the alert.

[caption id="attachment_9735" align="alignnone" width="800"]<img class="size-full wp-image-9735" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/04/2018-04_ADLA-AU-Alerts_0061.png" height="315" width="800" /> <em>Figure 3: Log Analytics alert criteria settings</em>[/caption]

&nbsp;

To configure the alert signal, select <strong>Custom Log Search</strong>.

[caption id="attachment_9745" align="alignnone" width="437"]<img class="size-full wp-image-9745" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/04/2018-04_ADLA-AU-Alerts_007.png" height="376" width="437" /> <em>Figure 4: Custom query for an alert</em>[/caption]
<ul>
 	<li>In the <strong>Search query</strong> field,  paste the specific query that will trigger the alert. For this example, we will track when a new folder is created in a Data Lake Store account:

[caption id="attachment_9935" align="alignnone" width="414"]<img class="size-full wp-image-9935" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/04/2018-04_ADL-Alerts_002.png" height="156" width="414" /> <em>Figure 5: Log search query</em>[/caption]</li>
</ul>
&nbsp;
<ul>
 	<li>The alert logic can be based on a number of results such as the total number of events tracked (create a folder in Data Lake Store, submit a job in Data Lake Analytics, etc), or a specific metric value such as a sum of the events or aggregation of values from the query (total data read, total number of AUs assigned, total duration of the jobs ran in a window of time, etc).

[caption id="attachment_9925" align="alignnone" width="509"]<img class="size-full wp-image-9925" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/04/2018-04_ADL-Alerts_001a.png" height="159" width="509" /> <em>Figure 6: The two main types of alerts - based on number of results or a single metric value</em>[/caption]</li>
</ul>
&nbsp;
<ul>
 	<li>The period and frequency indicate the rolling window of time that needs to be evaluated, and how frequently to check it, respectively.</li>
</ul>
In the <strong>Define alert detail </strong>section, we can enter some descriptive details, including the severity for the alert.

[caption id="attachment_9945" align="alignnone" width="698"]<img class="size-full wp-image-9945" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/04/2018-04_ADL-Alerts_005.png" height="266" width="698" /> <em>Figure 7: Default alert details</em>[/caption]

&nbsp;

Next, let's create a new action group where we can add people or groups to notify and the specific action to take, such as email, SMS, etc.

[caption id="attachment_9795" align="alignnone" width="356"]<img class="size-full wp-image-9795" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/04/2018-04_ADLA-AU-Alerts_011.png" height="118" width="356" /> <em>Figure 8: Action group details</em>[/caption]

&nbsp;

It is possible to create complex combinations of emails, SMS, or other notifications for specific users and groups. In this example, the team will be emailed:

[caption id="attachment_9805" align="alignnone" width="800"]<img class="size-full wp-image-9805" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/04/2018-04_ADLA-AU-Alerts_012.png" height="508" width="800" /> <em>Figure 9: Action group settings</em>[/caption]

&nbsp;

Once the <strong>action group</strong> is created it will be added to the definition, save the alerts settings, and you're done.

The rule will be displayed in the list of alerts:

[caption id="attachment_9775" align="alignnone" width="800"]<img class="size-full wp-image-9775" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/04/2018-04_ADLA-AU-Alerts_009.png" height="77" width="800" /> <em>Figure 10: Updated alert criteria</em>[/caption]

&nbsp;
<h2><strong>Conclusion</strong></h2>
In this blog post, I've shown you how to configure alerts for your Azure Data Lake accounts. These alerts can notify you of specific events or metric values that are relevant to you and your organization and will help you to proactively act on events, optimize costs, and understand usage trends. <strong>Try these simple steps to enable alerts, and let us know how they are helping you stay on top of your Azure Data Lake usage or costs - leave us a comment and share your experiences for others to build on.</strong> Have a specific need or scenario? Send your feature requests to our <a href="http://aka.ms/adlfeedback">Azure Data Lake UserVoice forum</a>.<strong> </strong>

Based on your comments and suggestions, we will cover useful and interesting events and metrics that you can plug-in into alerts. Stay tuned!]]></content:encoded>
    </item>
    <item>
      <title>Using the first job run to optimize subsequent runs with Azure Data Lake job AU analyzer</title>
      <link>https://docs.microsoft.com/archive/blogs/azuredatalake/using-the-first-job-run-to-optimize-subsequent-runs-with-azure-data-lake-job-au-analyzer</link>
      <pubDate>Fri, 30 Mar 2018 03:32:04 GMT</pubDate>
      <dc:creator><![CDATA[Jie Su]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/azuredatalake/?p=9615</guid>
      <description><![CDATA[Customers have been telling us it's hard to find the right balance between Analytics Units (AUs) and...]]></description>
      <content:encoded><![CDATA[Customers have been telling us it's hard to find the right balance between Analytics Units (AUs) and job execution time. For too many users, optimizing a job means running the job in the cloud using trial and error to find the best AU allocation that balances cost and performance. Today we are happy to introduce the AU Analysis feature to help you discover the best AU allocation strategy for a specific job. You can find this new feature by opening the job view and clicking on the <strong>AU Analysis</strong> tab in the <a href="https://docs.microsoft.com/en-us/azure/data-lake-analytics/data-lake-analytics-get-started-portal">Azure Portal</a> or in the latest <a href="https://docs.microsoft.com/en-us/azure/data-lake-analytics/data-lake-analytics-data-lake-tools-get-started">Visual Studio tools</a>.

Watch a quick demo of the video here:

[embed]https://youtu.be/cYLMJ5gHGSI[/embed]
<h2>Find the best AU allocation for your job</h2>
A Data Lake job is billed by the number of AU-hours it consumes (specified AUs multiplied by job execution time). You may want to optimize for cost (reducing AU waste) or achieve a certain SLA in response time (e.g. hourly job should finish after 30 minutes and not take longer than 1 hour).

How can you know how long it will take a job to run at different levels of AU allocation without running it many times in the cloud? The analyzer takes the execution information gathered while the job ran and simulates how different AU allocations might impact the run time of the job.

On the AU Analysis tab, you can see two AU allocation suggestions - 'Balanced' and 'Fast' that are based on your job’s particular characteristics (e.g. how parallelizable it is, how much data it is processing, etc.). If you are looking for the most cost-effective use of AUs, where you get the maximum improvement in execution time for the least number of additional AU-hours, then 'Balanced' is the one you want. Remember that you may not always see a linear reduction in job execution time by increasing the number of AUs. On the other end of the spectrum<span>,</span> you may want to prioritize performance, in which case choose ‘Fast’ to see the corresponding AUs and job run time.

In the example job below, the job originally ran for 2.5 hours with 50 AUs allocated, while 127.1 AU-hours were used. If we choose the 'Balanced' option, you will see that the job can run 8 times faster than the original round (2.5 hours to 18.7 minutes) even with 9% percentage reduction of AU-hours (127.1 to 115.2). In the chart you can also find the simulated AU usage over time in this option.

&nbsp;

<img src="https://msdnshared.blob.core.windows.net/media/2018/03/au1.png" alt="" width="800" height="535" class="alignnone wp-image-9625" />

&nbsp;

If you want to know the best performance with a reasonable efficiency, then the ‘Fast’ option will serve you well. It shows how many AUs are needed for the best performance. As you can see in the screenshot below, allocating 1765 AUs causes the job to finish in only 11.8 minutes.

&nbsp;

<img src="https://msdnshared.blob.core.windows.net/media/2018/03/au2.png" alt="" width="800" height="574" class="alignnone wp-image-9635" />

&nbsp;

If you want to achieve a certain SLA in response time or explore other AU allocations, the AU analyzer also enables you to explore the AU hours versus job runtime by using the custom slider bar to dynamically see how the charts and numbers changes for different settings.

In the screenshot below, by selecting <strong>Custom</strong> card and moving the slider bar, we can see that you need to allocate 81 AUs to have the job finished in 1 hour (costing 83.4 AU-hours).

&nbsp;

<img src="https://msdnshared.blob.core.windows.net/media/2018/03/au3.png" alt="" width="800" height="575" class="alignnone wp-image-9645" />
<h2>How accurate is the analyzer?</h2>
Basically, the analyzer uses a local job scheduler to simulate actual execution. It relates very closely to the job scheduler running in the cluster, except that it does not take into consideration the dynamic situations (network latencies, hardware failure, etc<span>.</span>) which may cause vertex rerun or slowness. To learn how those dynamic factors affect the accuracy of the analyzer, we tested it on several hundred production jobs and achieved correct estimates in better than 99% of the cases.

&nbsp;
<h2>Try this feature today!</h2>
Give this feature a try and let us know your feedback in the comments.

Interested in any other samples, features, or improvements? Let us know and vote for them on our <a href="https://aka.ms/adlfeedback">UserVoice page</a>!

&nbsp;
<h2>Learn more</h2>
For more detailed introduction about AU usage and job cost you can refer to the two blogs below.

<a href="https://blogs.msdn.microsoft.com/azuredatalake/2016/10/12/understanding-adl-analytics-unit/">Understanding the Data Lake Analytics Unit</a>

<a href="https://blogs.msdn.microsoft.com/azuredatalake/2018/01/08/how-to-save-money-and-control-costs-with-azure-data-lake-analytics/">How to Save Money and Control Costs with Azure Data Lake Analytics</a>]]></content:encoded>
    </item>
  </channel>
</rss>