在Spark Dataframe中插入和删除数据

时间:2017-07-26 09:38:05

标签: apache-spark pyspark

我有一个PySpark Dataframe input_dataframe ,如下所示:

  <div>

            <?php
            require 'getMeasurementTypesByUser.php';
            $option1 = isset($_GET['user']) ? $_GET['user'] : false;
            if ($option1) {
                $res = getMeasurementTypesByUser($_GET['user']);

                echo '<form method="post" action=""><select id="measurement" name="measurement" onchange="this.form.submit();">';
                echo '<option value="">Select Measurement</option>';
                foreach ($res as $row) {
                    if ($row['MeasurementID'] != 1 && $row['MeasurementID'] != 2) {
                        echo '<option value="' . $row['MeasurementID'] . '">' . $row['MeasurementName'] . '</option>';
                    }else if($row['MeasurementID']== 1 ){
                        echo '<option value="1">Pressure</option>';
                    }
                }
                echo '</select></form>';
                $UserID = htmlentities($_GET['user'], ENT_QUOTES, "UTF-8");
            }
            $option = isset($_POST['measurement']) ? $_POST['measurement'] : false;
            if ($option) {
                $MeasurementID = htmlentities($_POST['measurement'], ENT_QUOTES, "UTF-8");
                if($MeasurementID==1){
                    $MeasurementID2=2;
                }
            }
            echo '<form method="get" action=""><select id="user" name="user" onchange="this.form.submit();">';
            echo '<option value="">Select User ID</option><option value="1">1</option><option value="2">2</option></select></form>';
            ?>

        </div>
        <!-- javascript -->
        <script src="libs/jquery-3.2.1.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(document).ready(function () {
                $.ajax({
                    url: "/Kostas/measurementData.php",
                    type: "POST",
                    data: {UserID: <?php echo json_encode($UserID); ?>, MeasurementID: $('#measurement').find(":selected").val()}, //here
                    success: function (data) {
                        console.log(data);
//goes on

我有另一个数据框 delta_dataframe ,它有来自input_dataframe的更新记录和一些新记录,如下所示:

**cust_id**   **source_id**     **value**
   10              11          test_value
   10              12          test_value2

在两个数据框架中,主键是 cust_id source_id 的组合。

我必须生成一个新的数据框 output_dataframe ,它将包含来自 input_dataframe 的记录以及来自 delta_dataframe 的更新记录,因此我的最终数据框是如下:

**cust_id**   **source_id**     **value**
   10              11          update_value
   10              15          new_value2

有人可以建议我,我怎样才能在PySpark中实现它。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

您需要使用两列

加入input_dataframedelta_dataframe
output_df = input_df.join(delta_df, input_df['cust_id'] = delta_df['cust_id'] & input_df['source_id'] = delta_df['source_id'], 'left_outer')

然后只选择output_df

中的必填字段

答案 1 :(得分:0)

我们可以使用外部联接并选择所需的数据框值

{
 "my_index": {
"mappings": {
  "my_type": {
    "properties": {
      "text": {
        "type": "text",
        "analyzer": "trigrams"
      }
    }
  }
}

答案 2 :(得分:0)

根据主键减去两个数据帧。使用input_dataframe进行输出的内部连接。然后使用Delta_dataframe获取它的Uion。你会得到适当的输出。